finally语句
finally的用法:只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行。请看下面的代码:
public final class FinallyTest { public static void main(String[] args) { try { throw new NullPointerException(); } catch (NullPointerException e) { System.out.println("程序抛出了异常"); } finally { System.out.println("执行了finally语句块"); } } }
运行结果说明了finally的作用:
1. 程序抛出了异常
2. 执行了finally语句块
有没有一种情况使finally语句块得不到执行呢?大家可能想到了return、continue、break这三个可以打乱代码顺序执行语句的规律。那我们就来试试看,这三个语句是否能影响finally语句块的执行:
public final class FinallyTest { // 测试return语句 public ReturnClass testReturn() { try { return new ReturnClass(); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("执行了finally语句"); } return null; } // 测试continue语句 public void testContinue() { for (int i = 0; i < 3; i++) { try { System.out.println(i); if (i == 1) { continue; } } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("执行了finally语句"); } } } // 测试break语句 public void testBreak() { for (int i = 0; i < 3; i++) { try { System.out.println(i); if (i == 1) { break; } } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("执行了finally语句"); } } } public static void main(String[] args) { FinallyTest ft = new FinallyTest(); // 测试return语句 ft.testReturn(); System.out.println("----------return over----------"); // 测试continue语句 ft.testContinue(); System.out.println("----------continue over----------"); // 测试break语句 ft.testBreak(); System.out.println("----------break over----------"); } }
public class ReturnClass { public ReturnClass() { System.out.println("执行了return语句"); } }
上面这段代码的运行结果如下:
执行了return语句
执行了finally语句
----------return over----------
0
执行了finally语句
1
执行了finally语句
2
执行了finally语句
----------continue over----------
0
执行了finally语句
1
执行了finally语句
----------break over----------
return、continue和break都没能阻止finally语句块的执行。
从输出的结果来看:return语句是在finally语句块之后执行的,也就是说finally语句块是在程序退出方法之前被执行的。同样,finally语句块是在循环被跳过(continue)和中断(break)之前被执行的。
相关推荐
17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句...
finally语句块与return的执行关系
Delphi异常处理try_except语句和try_finally语句用法以及区别.pdf Delphi异常处理try_except语句和try_finally语句用法以及区别.pdf
Java语言finally语句详解,finally到底是在return之前还是之后执行.zip
- 无论try是否发生异常,finally语句都会执行- 如果try/catch中包含控制转移语句(return、continue、break),finally
try...catch...finally语句的相关案列
关于Java中finally语句块的深度辨析.doc
2.3 try-except-else-finally 语句 2.4 小结 三、异常抛出 (Exception raising) 四、异常自定义 (Exception customizing) 五、预定义的清理行为 (with 语句) 六、断言 (Asserting) 七、小结 (Summary) 一、绪论 ...
主要介绍了讲解Java编程中finally语句的基本使用方法,finally在异常处理中的使用时Java入门学习中的基础知识,需要的朋友可以参考下
第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回) 第二:finally里面不建议放return语句,根据需要,return语句...
NULL 博文链接:https://seaizon.iteye.com/blog/2066983
主要介绍了Powershell中Finally语句用法示例,本文用一个播放音乐的脚本为例子,使用Finally语句在异常结束操作时执行清理操作,需要的朋友可以参考下
主要介绍了C#异常处理中try和catch语句及finally语句的用法示例,finally语句的使用涉及到了C#的垃圾回收特性,需要的朋友可以参考下
主要深度介绍了Java编程中finally语句的执行原理,细致讲解了finally在异常处理中的流程控制作用,需要的朋友可以参考下
下面小编就为大家带来一篇浅谈Java finally语句到底是在return之前还是之后执行(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java的异常处理机制主要包括try-catch-finally语句和throw语句。 ### try-catch-finally语句 try-catch-finally语句是Java中处理异常的主要方式。try块包含可能会抛出异常的代码,catch块包含用于处理特定类型异常...
Java异常处理是Java编程中一个非常重要的部分,它允许程序在遇到错误或异常情况时采取适当的行动...finally语句块:无论是否发生异常,finally语句块中的代码都将被执行。通常用于清理资源,例如关闭文件或数据库连接。
try-finally语句是Microsoft对C和C++语言的扩展,它能使32位的目标程序在异常出现时,有效保证一些资源能够被及时清除,这些资源的清除任务可以包括例如内存的释放,文件的关闭,文件句柄的释放等等。try-finally...
3在使用数据库操作的时候尽量多用finally语句,进行资源的释放。 try{}catch(Exception e){} finally{if(conn!=null){conn.colse();conn==null}} 4事务的处理 a关闭Connection的自动提交connn.setAutoCommit; b...