Java尝试捕捉最终块没有捕获

我正在审阅一些新的代码。 该程序只有一个try和一个finally块。 由于catch块被排除在外,如果try块在遇到异常或任何可抛出的情况时如何工作? 它是否直接进入finally块?


如果try块中的任何代码可以抛出一个检查的异常,它必须出现在方法签名的throws子句中。 如果引发一个未经检查的异常,它将冒出方法。

无论是否抛出异常,finally块都会执行。


关于try / finally一个小记录:finally将永远执行,除非

  • System.exit()被调用。
  • JVM崩溃。
  • try{}块永远不会结束(例如无限循环)。

  • Java语言规范(1)描述了如何执行try-catch-finally 。 没有捕获就等于没有捕获能够捕获给定的Throwable。

  • 如果try块的执行由于抛出一个值V而突然完成,那么有一个选择:
  • 如果V的运行时类型可分配给try语句的任何catch子句的参数,则...
    ...
  • 如果V的运行时类型不能分配给try语句的任何catch子句的参数, 则执行finally块 。 然后有一个选择:
  • 如果finally块正常完成,那么try语句突然完成,因为抛出了值V.
  • 如果因为S原因finally块突然完成,那么try语句因S原因突然完成(并丢弃并丢弃值V的抛出)。

  • (1)try-catch-finally的执行

    链接地址: http://www.djcxy.com/p/73715.html

    上一篇: Java Try Catch Finally blocks without Catch

    下一篇: Why are empty catch blocks a bad idea?