如果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/