有一个库(我不能控制)包含一个函数名为内部引发类型为StupidException的异常。我正在写一个名为Outer的函数,它调用Inner。我不能提前告知StupidException将被提出,我无法以合理的方式处理。我不希望我的功能外部来电者看到一个StupidException - 我要通过从外部,而不是(由于几个原因)返回空情况与他们沟通。所以,在我看来,最合理的代码是:空捕获块
public thing Outer()
{
thing result = null;
try
{
result = Inner();
}
catch(StupidException ex)
{
// do nothing
}
return result;
}
我读过有关空catch块是如何邪恶,因为它“吞下”异常严厉的警告。吞噬异常正是我想要做的,在这里,实际上,但空的catch块仍然不适合我。有没有更好的办法?
仅仅因为你不希望你的调用者看到异常并不意味着_you_不应该看到异常并记录它。 – 2013-03-02 13:26:56
但是,如果你吞下_all_异常,你的'Outer'消费者现在是否知道它传递了无效参数?现在他只会认为查询没有返回任何结果。 – CodeCaster 2013-03-02 13:27:26
@CodeCaster - 没有任何参数,但我明白你的观点。我修改了这个问题。 – bubba 2013-03-02 14:04:35