Java 最后是真的需要封锁吗?
如果catch块之后的语句无论如何都要执行,那么finally块在java中的真正用途是什么? 范例Java 最后是真的需要封锁吗?,java,try-catch,finally,Java,Try Catch,Finally,如果catch块之后的语句无论如何都要执行,那么finally块在java中的真正用途是什么? 范例 底部的语句不能保证执行。例如,如果 try块或匹配的catch块使用return(或在某些情况下使用break) 没有一个catch块与异常匹配,因此异常是未捕获的 在catch 在所有这些情况下,finally语句都保证执行。您的catch可以返回或抛出异常,在此之前,您可以使用finally来释放资源。最后,在将控件传递回调用方之前执行。代码中的任何地方都可能有return语句。即使代码
底部的语句不能保证执行。例如,如果
块或匹配的try
块使用catch
(或在某些情况下使用return
)break
- 没有一个
块与异常匹配,因此异常是未捕获的catch
- 在
catch
在所有这些情况下,
finally
语句都保证执行。您的catch可以返回或抛出异常,在此之前,您可以使用finally来释放资源。最后,在将控件传递回调用方之前执行。代码中的任何地方都可能有return语句。即使代码可能已返回调用方法,finally
块中的代码仍将被执行,即使我们在try中添加了System.exit(0)
block@AshishKudale当前位置我还没有试过,但没有按计划。在Python中,最终
即使在退出时也会执行,但Java似乎没有提供同样的礼貌。补充答案。finally的主要用途是释放try块中锁定的资源。例如:假设您在try中打开了一个文件。您可以编写几个catch块来处理多个异常类型。关闭每个catch块中打开的文件是不明智的(冗余)。最后,让关闭文件逻辑只写在一个地方,这对您有所帮助。@AshishKudale No Finally块在系统运行后不会执行。退出(0),您的程序将在执行系统后立即终止。退出(0)…@DhaRmvEErsiNgh:现在离主题越来越远,但不,不是很快-还有(几乎没有)关闭挂钩的时间(请参阅)。
try {
//Code
}
catch (Exception e)
{
//Code
}
finally {
System.out.println("anyway it will be executed");
}
System.out.println("anyway it will be executed");