我什么时候应该在Java try-catch-finally中使用finally-block

时间:2011-09-13 17:07:00

标签: java exception-handling

我何时应该使用代码段A而不是代码段B(即使用代码段A的好处是什么)?:

代码段A:

try {
    // codeblock A
}
catch (Exception ex) {
    // codeblock B
}
finally {
    //codeblock C
}

代码段B

try {
    // codeblock A
}
catch (Exception ex) {
    // codeblock B
}

//codeblock C

5 个答案:

答案 0 :(得分:15)

如果您有必须执行的代码,请使用finally块,无论是否抛出异常。

清理数据库连接等稀缺资源就是一个很好的例子。

答案 1 :(得分:3)

一个明显的例子是当您在catch块中重新加注或抛出另一个异常时。

答案 2 :(得分:1)

如果您需要进行一些清理,例如,关闭数据库连接。因为“finally”总是被执行,所以你不需要在“try”结束时以及在一个或多个“catch”块中进行相同代码的容易出错的复制粘贴。

答案 3 :(得分:1)

当您拥有需要在成功或错误方案中清理的资源时,您几乎总是必须使用带有finally块的代码段。一个典型的例子是jdbc连接对象,它应该始终在finally块中关闭(清理)。

答案 4 :(得分:0)

想象一下return块内有catch语句: C 块不会在代码段 B 中执行,但在代码段中 A 它会在返回之前。