真的需要 finally 块吗?

Is finally block is really needed?

如果catch块之后的语句无论如何都会被执行,finally块在java中的真正用途是什么? 例子

 try {
 //Code
}
catch (Exception e)
{
//Code
}
finally {
 System.out.println("anyway it will be        executed");
 }

System.out.println("anyway it will be executed");

不保证底部的语句被执行。例如,如果

  • try 块或匹配的 catch 块使用 return(或在某些情况下为 break
  • none个catch块匹配异常,异常未被捕获
  • catch
  • 中引发(但未捕获)另一个(或相同的)异常

在所有这些情况下,finally 语句 保证会被执行。

您的 catch 可以 return 或抛出异常,在此之前您可以使用 finally 来释放资源。最后在控制传回给调用者之前执行。