11

可能的重复:
为什么空的 catch 块是个坏主意?
是否有任何正当理由忽略捕获的异常

你知道空的 catch 块不是绝对邪恶的情况吗?

try
{
    ...
    // What and When?
    ...
}
catch { }
4

5 回答 5

7

There are a lot of questions on this, try to look at:

Why are empty catch blocks a bad idea?

From that post's accepted answer:

Usually empty try-catch is a bad idea because you are silently swallowing an error condition and then continuing execution. Occasionally this may be the right thing to do, but often it's a sign that a developer saw an exception, didn't know what to do about it, and so used an empty catch to silence the problem.

It's the programming equivalent of putting black tape over an engine warning light.

于 2011-01-14T14:29:59.340 回答
1

我将它用于一些我需要某种bool TrySomething(out object)函数或object TrySomething()底层调用不提供任何其他机制作为例外的自写库。在这种情况下,我使用一个空的 catch 块并返回falsenull(取决于函数签名)。

证明空 catch 块的示例

public bool TrySomething(out object destination)
{
    try
    {
        destination = DoSomething();
        return true;
    }
    catch
    {}

    return false;
}
于 2011-01-14T14:34:49.040 回答
1

公理:

空的 catch 块绝对是邪恶的

不要试图找到解决方法。仅仅通过试图找到它们不是绝对邪恶的案例就意味着你在浪费宝贵的大脑周期。不要试图在这里找到模式,想“嗯,我应该在这里放一个空的 catch 块吗?”

如果您在某人的代码中偶然发现了一个空的 catch 块,那么您只是偶然发现了技术债务。修理它。即使只是在一个空的 catch 块中添加一个日志语句,你也会让这个世界变得更美好。

于 2011-01-14T14:37:22.030 回答
1

看看这个,它基本上把你可能遇到的异常分为四类,没有一个应该由一个空的catch块来处理。

于 2011-01-14T14:33:01.000 回答
1

我会说您至少应该提供某种评论或记录消息,表明您在 try {} 中输入的内容引发了异常,这就是您不做任何事情的原因。

于 2011-01-14T14:33:43.500 回答