有一个库(我无法控制)包含一个名为Inner的函数,它引发了类型为StupidException的异常.我正在编写一个名为Outer的函数,它调用Inner.我不能提前告诉我什么时候会引发StupidException,我无法以任何合理的方式处理它.我不希望我的函数Outer的调用者看到StupidException - 我将通过从Outer返回null来传达这种情况(由于几个原因).所以,在我看来,最合理的代码是:
public thing Outer()
{
thing result = null;
try
{
result = Inner();
}
catch(StupidException ex)
{
// do nothing
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于空陷阱是如何邪恶的严厉警告,因为它"吞下"异常.吞下异常正是我想要做的事情,实际上,这里空的捕获块对我来说仍然感觉不对.有没有更好的办法?
如果这会让你感觉更舒服,你可以从catch块返回,这样它看起来不会是空的:
public thing Outer()
{
try
{
return Inner();
}
catch
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
如果意图是吞下例外,这是正常的.您可能只想验证此内部函数可能抛出的异常类型,以便仅捕获它们而不是捕获所有异常.例如,您可以联系此代码的作者,以询问他们的代码可能抛出的异常类型,然后仅针对这些异常.
| 归档时间: |
|
| 查看次数: |
980 次 |
| 最近记录: |