我已经阅读了一些关于C#异常处理实践的其他问题,但似乎没有人问我在寻找什么.
如果我为特定的类或一组类实现我自己的自定义Exception.是否应该使用内部异常将与这些类相关的所有错误封装到我的异常中,还是应该让它们落空?
我认为捕获所有异常会更好,以便可以从我的源代码中立即识别异常.我仍然将原始异常作为内部异常传递.另一方面,我认为重新抛出异常是多余的.
例外:
class FooException : Exception
{
//...
}
Run Code Online (Sandbox Code Playgroud)
选项1:Foo包围所有异常:
class Foo
{
DoSomething(int param)
{
try
{
if (/*Something Bad*/)
{
//violates business logic etc...
throw new FooException("Reason...");
}
//...
//something that might throw an exception
}
catch (FooException ex)
{
throw;
}
catch (Exception ex)
{
throw new FooException("Inner Exception", ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:Foo抛出特定的FooExceptions但允许其他异常落空:
class Foo
{
DoSomething(int param)
{
if (/*Something Bad*/)
{
//violates business logic etc...
throw new FooException("Reason...");
}
//...
//something that …Run Code Online (Sandbox Code Playgroud)