try catch finally中finally什么情况下不会被执行
时间: 2023-12-07 16:10:26 浏览: 161
在以下情况下,finally 语句不会被执行:
1. 在 try 或 catch 块中使用 System.exit() 来退出程序。
2. 在 try 或 catch 块中使用了 Runtime.getRuntime().halt() 方法来退出程序。
3. 在 try 块中发生了死循环或其它异常导致程序无法正常终止;或者在 try 语句块中使用了 return、break 或 continue 等直接结束该代码块的语句,导致没有机会执行 finally 语句块。
4. 在 try 块中使用了 Thread.stop() 或 Thread.destroy() 等停止线程的方法以及 interrupt() 不能及时抛出 InterruptedException 异常的情况。
5. 在 finally 语句块中发生了异常,导致 finally 块内的语句没有被执行。
请注意,以上情况是一些特殊的情况,finally 块通常都是能够被执行的。
相关问题
try catch finally执行顺序
try-catch-finally语句的执行顺序如下:
1. try块中的代码会被首先执行。
2. 如果try块中的代码没有引发任何异常,那么catch块就不会执行,程序会直接跳到finally块执行。
3. 如果try块中的代码引发了异常,程序会跳到与该异常类型匹配的catch块中执行。
4. catch块执行完毕后,程序会继续执行finally块中的代码。
5. 如果finally块中没有return语句,程序会继续向下执行。
6. 如果finally块中有return语句,会覆盖掉try块或catch块中的return语句,导致程序返回finally块中的值。
需要注意的是,如果try块和catch块中都有return语句,finally块中的return语句只会覆盖掉try块或catch块中的return语句, 不会影响到try块或catch块之间的执行顺序。
try catch finally 执行顺序
在 Java 中,try catch finally 块的执行顺序如下:
1. 首先执行 try 块中的代码;
2. 如果在 try 块中没有出现任何异常,则跳过 catch 块,并执行 finally 块中的代码;
3. 如果在 try 块中出现了异常,则会跳过 try 块中剩余的代码,并执行与所抛出异常类型相符的 catch 块中的代码;
4. 无论是否出现异常,finally 块中的代码总是会被执行。
注意:如果 try 块中抛出异常后,没有相对应的 catch 块,则程序会崩溃并输出异常信息。
阅读全文