在写“尝试”时,我们为什么要总是写一个“捕获”?

时间:2012-09-11 12:08:15

标签: try-catch

最近我与一位开发人员进行了一次有趣的对话,他告诉我每次写“尝试”时都必须提供“捕获”。他无法解释为什么这个规则。他告诉我这是一个良好的编程原则。为什么这个规则?

我不同意他的意见。我认为有时候你可以写一个只有“finally”块的“try”块。但是,我认为如果你写一个“捕获”,你必须在你的捕获中做一些事情。永远不要只是重新抛出错误。

3 个答案:

答案 0 :(得分:9)

您是对的:如果您不知道如何处理异常并且只是想确保执行catch子句,则不需要编写finally子句。 / p>

添加catch子句只是为了重新抛出异常,这是不好的做法。

顺便说一句,为了说明catchfinally实际上与两个不同的(当然不是外国的)问题相关,请注意某些语言使用不同的构造来捕获异常并且确保执行一些代码(通常是资源释放)。例如,使用defer

答案 1 :(得分:6)

在大多数应用程序中,try/finally构造的数量远远超过try/catch构造。

因为清理资源比接收异常更常见,所以你知道如何处理。

但是try/finally几乎总是可以被C#中的using替换,所以在C#中,你的开发人员可能在这种情况下有一点意义;但它绝对不是“良好编程原则”。

答案 2 :(得分:2)

try
{
    ...
}
finally
{
    ...
}

使您有机会在finally块中执行代码,否则如果在try块中抛出异常,则会错过该代码。 如果在发生异常时有特定的操作,则只需添加一个catch块。