博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java异常一段很有意思的代码
阅读量:4630 次
发布时间:2019-06-09

本文共 919 字,大约阅读时间需要 3 分钟。

今天学习了Java的异常,讲到try-catch-finally时,老师演示了一段代码,觉得很有意思,很能反映出其执行的过程,让自己有点绕,特意记录一下。

只要代码执行到try代码内部, 不管有没有异常,finally区域的代码都会执行.
即便try代码和catch代码中有return, finally也会执行.
只有一种情况在执行finally代码前,退出虚拟机.
System.exit(1);

--------------------------------------------------------------------------------------------

finally语句和前面的return语句那个先执行? finally先执行. 

int i = 10;try {     return i++; //i++: 10 i:11  黄色区域,csdn代码加颜色好像有问题。。。。。} catch (Exception e) {     e.printStackTrace();}finally {     i++; // i:12 蓝色区域}

上面代码返回的是10, i的最终结果: 12

执行步骤:1. 黄色区域的i++先执行,算出表达式的结果, 但是先不return(先“存”起来).2. 执行finally中蓝色区域的i++3. 在执行黄色区域的return.

int i = 10;try {  return i++; //i++: 10 i:11 黄色区域,csdn代码加颜色好像有问题。。。。。} catch (Exception e) {   e.printStackTrace();}finally {   return i++;//i++:11, i:12 蓝色区域}

上面代码返回的是11, 不是10.

执行步骤:1. 黄色区域的i++先执行,算出表达式的结果, 但是先不return.2. 执行蓝色区域的i++计算出表达式的结果,然后return.3. try的return没有执行.

转载于:https://www.cnblogs.com/ss0xt/p/6667184.html

你可能感兴趣的文章
用JAVA生成老电影海报
查看>>
数组溢界地址的正确使用: 即 int a[6] 中的 a[-1] 和 a[6] 正确使用
查看>>
怎样退出App之前唤醒还有一个App?
查看>>
-bash:jps:command not found
查看>>
cogs 998. [東方S2] 帕秋莉·诺蕾姬
查看>>
BZOJ 1019: [SHOI2008]汉诺塔
查看>>
jquery ocupload一键上传文件应用
查看>>
Java并发编程-看懂AQS的前世今生
查看>>
洛谷 [P3480] KAM-Pebbles
查看>>
操作系统任务调度问题
查看>>
day02-python 基础02
查看>>
.net下Ueditor配置(主要讲解上传功能配置)
查看>>
std::string的Copy-on-Write:不如想象中美好
查看>>
KONG -- 配置 service 并添加 key-auth
查看>>
多重继承和有内嵌对象时构造函数调用顺序
查看>>
C#编码规范
查看>>
信号、槽位及布局
查看>>
webpack + vue
查看>>
启动JvisualVM提示"无法检测到本地java应用程序"的解决方案
查看>>
抓包实现脚本编写--手持机
查看>>