问题
我正在审查一些新代码。该程序只有一个try和一个finally块。由于catch块被排除在外,如果遇到异常或任何可抛出的东西,try块如何工作?它只是直接进入finally块吗?
#1 热门回答(103 赞)
如果try块中的任何代码都可以抛出已检查的异常,则它必须出现在方法签名的throws子句中。如果抛出未经检查的异常,则会冒出该方法。
无论是否抛出异常,都始终执行finally块。
#2 热门回答(80 赞)
关于ontry
/ finally
的一个小注释:除非,否则将始终执行
- 调用System.exit()。
- JVM崩溃了。
- try {}块永远不会结束(例如无限循环)。
#3 热门回答(32 赞)
Java语言规范(1)描述了如何执行5668366452。没有捕获相当于没有捕获能够捕获给定的Throwable。
如果try块的执行由于抛出值V而突然完成,那么有一个选择:如果V的运行时类型可以赋值给try语句的任何catch子句的参数,那么...... ... If V的运行时类型不能分配给try语句的任何catch子句的参数,然后执行finally块。然后有一个选择:如果finally块正常完成,那么try语句因为抛出值V而突然完成。如果finally块因为S而突然完成,那么try语句突然完成原因S(和抛出值V被丢弃并被遗忘)。
(1)Execution of try-catch-finally