执行throw后 后面代码还会执行吗?

您所在的位置:网站首页 unity结束程序的代码 执行throw后 后面代码还会执行吗?

执行throw后 后面代码还会执行吗?

2023-11-19 07:20| 来源: 网络整理| 查看: 265

1.当我们对throw的对象进行try catch之后 public void re(int i) { if (i > 5){ this.i = i; }else { try { throw new Exception("数据非法!"); } catch (Exception e) { e.printStackTrace(); } System.out.println("123"); } 结果显示:123被输出 java.lang.Exception: 数据非法! at com.zsxfa.java.Ex3.re(ExcTest1.java:21) at com.zsxfa.java.ExcTest1.main(ExcTest1.java:10) 123 2 不对throw的对象进行try catch操作 2.1 public void re(int i) throws Exception { if (i > 5) { this.i = i; }else { throw new Exception("数据非法!"); System.out.println("123"); } 结果显示:编译不通过 2.2 public void re(int i) throws Exception { if (i > 5) { this.i = i; }else { throw new Exception("数据非法!"); } System.out.println("123"); 结果显示:异常抛出,123不会输出 java.lang.Exception: 数据非法! at com.zsxfa.java.Ex2.re(ExcTest.java:30) at com.zsxfa.java.ExcTest.main(ExcTest.java:11) 数据非法! 拓展 try{ return; }catch(){ }finally{ } return;

上面的代码的执行顺序是这样的:

代码段首先进入try语句,因无异常抛出,代码将要return的内容保存在内存中,然后执行finally,因finally中无可执行内容,再转回try中执行return,整个代码段执行结束,而finally后面的return是不会执行的。

注 1、不管有没有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值, 而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改 变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的; 4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3