嵌套 'finally' block 中的 Java 'try' 子句

标签 java exception

如果PrintWriter抛出异常,下面的finally子句会被执行吗?

try{
   PrintWriter out = new PrintWriter(filename);
   try {
       //output
   } finally {
       out.close();
   }
} catch {
   //handle exception
}

如果PrintWriter抛出异常,那么嵌套的try block 将永远不会被执行,但为什么嵌套的finally子句仍然会被执行执行,即使它是嵌套和跳过的?

更新: 我进行了一些测试,如果在嵌套的 try 子句之前抛出异常,则嵌套的 finally 将不会被执行。 如果在嵌套的try子句中抛出异常,则将执行内部finally和外部catch

最佳答案

否,因为之前发生异常时不会到达内部 try block ,因此也不会到达finally block 。

关于嵌套 'finally' block 中的 Java 'try' 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643043/

相关文章:

java - 对象冒泡排序错误: NullPointerException

java - Java中finalize方法抛出异常,Java文档中矛盾?

python - PySFTP/Paramiko 异常泄漏到标准错误中

java - Glide Gradle无法识别ModelLoader

java - 在java中使用链表乘多项式

java - 仅使用递归打印 V 形

java - 错误 : Could not find or load main class org. apache.gobblin.runtime.cli.GobblinCli

java - 为什么需要先初始化 fn3(变量),然后才能在循环外使用 fn3?

php - PayPal 付款 - HTTP 响应代码 400

java - 每当发生异常时,我们应该记录堆栈跟踪吗?