我何时应该使用代码段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
答案 0 :(得分:15)
如果您有必须执行的代码,请使用finally块,无论是否抛出异常。
清理数据库连接等稀缺资源就是一个很好的例子。
答案 1 :(得分:3)
一个明显的例子是当您在catch
块中重新加注或抛出另一个异常时。
答案 2 :(得分:1)
如果您需要进行一些清理,例如,关闭数据库连接。因为“finally”总是被执行,所以你不需要在“try”结束时以及在一个或多个“catch”块中进行相同代码的容易出错的复制粘贴。
答案 3 :(得分:1)
当您拥有需要在成功或错误方案中清理的资源时,您几乎总是必须使用带有finally块的代码段。一个典型的例子是jdbc连接对象,它应该始终在finally块中关闭(清理)。
答案 4 :(得分:0)
想象一下return
块内有catch
语句: C 块不会在代码段 B 中执行,但在代码段中 A 它会在返回之前。