真的需要 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 来释放资源。最后在控制传回给调用者之前执行。
如果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 来释放资源。最后在控制传回给调用者之前执行。