Java 最后是真的需要封锁吗?

Java 最后是真的需要封锁吗?,java,try-catch,finally,Java,Try Catch,Finally,如果catch块之后的语句无论如何都要执行,那么finally块在java中的真正用途是什么? 范例 底部的语句不能保证执行。例如,如果 try块或匹配的catch块使用return(或在某些情况下使用break) 没有一个catch块与异常匹配,因此异常是未捕获的 在catch 在所有这些情况下,finally语句都保证执行。您的catch可以返回或抛出异常,在此之前,您可以使用finally来释放资源。最后,在将控件传递回调用方之前执行。代码中的任何地方都可能有return语句。即使代码

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


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

  • 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");