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

我何时应该使用代码段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 

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

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

一个明显的例子是当你在catch块中重新引发或抛出另一个exception时。

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

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

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