我实际上正在编写一个可供多个类使用的库类。我只是简单地举个例子来说明一点。假设我有三个类(class):A、B 和 C:
public class B
{
public static string B_Method()
{
string bstr = String.Empty;
try
{
//Do Something
}
catch
{
//Do Something
}
return bstr;
}
B 是我正在编写的库类。现在让我们说另外两个类 A 和 C:
public class A
{
public void A_Method()
{
string astr = B.B_Method();
}
}
public class C
{
public void C_Method()
{
string cstr = B.B_Method();
}
}
问题是关于异常处理的。我希望 A 和 B 两个类各自的方法以各自不同的方式处理 B_Method 中发生的异常。
我在寻找框架设计模式,但觉得没什么用。
最佳答案
我通常遵循的方法是这样的:
- 如果我的方法可以做一些有用的事情除了异常(exception),我会捕获它并去做。
- 如果没有,我不会捕获它,而是将其留给调用代码来处理。
我唯一会放置“捕获所有” block 的地方是 UI 代码的入口点(例如按钮单击的事件处理程序等),因为不捕获异常可能会导致进程中断。
这也意味着异常子句应该捕获您可以处理的特定异常。
我有时看到的一种方法是捕获异常,将其包装在新的异常类型中并抛出。虽然这为您提供了一些可追溯性,但我也觉得它在调用代码的异常处理中删除了一些选项,例如针对不同场景使用特定的 catch 子句。在这些情况下,您将需要使用 if 子句来检查内部异常,在我看来可读性较差。
关于c# - 异常处理中的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13877647/