当前位置: 首页 > news >正文

try…catch…finally语句里return语句的执行顺序是怎样的?

第一种情况

try语句块里面有return语句,catch语句块和finally语句块里面没有return语句。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test1());}public static int test1() {int i =10;try {System.out.println("try语句");return --i;}catch (Exception e) {System.out.println("catch语句");}finally {System.out.println("finally语句");}return 0;}
}

运行结果如下:

try语句
finally语句
9

执行顺序:

1.先执行try块中语句,包括return语句中的表达式运算,但不返回。

2.执行finally语句块中的全部代码。

3.最后执行try块中return 返回。

第二种情况

try语句块和finally语句块里面有return语句,catch语句块里面没有return语句。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test2());}public static int test2() {int i =10;try {System.out.println("try语句");return --i;}catch (Exception e) {System.out.println("catch语句");}finally {System.out.println("finally语句");return --i;}}
}

运行结果如下:

try语句
finally语句
8

执行顺序:

1.先执行try块中语句,包括return语句中的表达式运算,但不返回。

2.执行finally语句块中的全部代码。

3.最后发现finally语句块中有return语句,从这里返回。

第三种情况

try语句块和catch语句块里面有return语句,finally语句块里面没有return语句,存在异常。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test3());}public static int test3() {int i =10;try {System.out.println("try语句");int j = 10 / 0;return --i;}catch (Exception e) {System.out.println("catch语句");return --i;}finally {System.out.println("finally语句");}}
}

 运行结果如下:

try语句
catch语句
finally语句
9

执行顺序:

1.先执行try块中语句,出现异常,catch捕获到异常。

2.执行catch块中语句,包括return语句中的表达式运算,但不返回。

3.执行finally语句块中的全部代码。

4.最后执行catch块中return 返回。

第四种情况

try语句块、catch语句块和finally语句块里面都有return语句,存在异常。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test4());}public static int test4() {int i =10;try {System.out.println("try语句");int j = 10 / 0;return --i;}catch (Exception e) {System.out.println("catch语句");return --i;}finally {System.out.println("finally语句");return --i;}}
}

 运行结果如下:

try语句
catch语句
finally语句
8

执行顺序:

1.先执行try块中语句,出现异常,catch捕获到异常。

2.执行catch块中语句,包括return语句中的表达式运算,但不返回。

3.执行finally语句块中的全部代码。

4.最后发现finally语句块中有return语句,从这里返回。

http://www.lryc.cn/news/475516.html

相关文章:

  • AIGC与虚拟现实(VR)的结合与应用前景
  • 如何在visual studio中 生成 并 使用dll和lib文件
  • 「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件
  • Iceoryx2:高性能进程间通信框架(中间件)
  • 构 造 器
  • 草莓叶片病害识别与分类数据集(猫脸码客 第234期)
  • 微服务设计模式 - 断路器模式 (Circuit Breaker Pattern)
  • HarmonyOS NEXT 应用开发实战(九、知乎日报项目详情页实现详细介绍)
  • lvgl 模拟器移植(V9)
  • 基于vue+neo4j 的中药方剂知识图谱可视化系统
  • (自用)机器学习python代码相关笔记
  • docker复现pytorch_cyclegan
  • IDEA2024下安装kubernetes插件并配置进行使用
  • 理解原子变量之二:从volatile到内存序-进一步的认识
  • DICOM标准:MR图像模块属性详解——磁共振成像(MR)在DICOM中的应用
  • Linux内核与用户空间
  • 计算机网络-以太网小结
  • 找树根和孩子c++
  • 植物源UDP-糖基转移酶及其分子改造-文献精读75
  • Redis中String 的底层实现是什么?
  • 像mysql一样查询es
  • SpringBoot中@Validated或@Valid注解校验的使用
  • HashMap为什么线程不安全?
  • 类加载器及反射
  • aws boto3 下载文件
  • 3DDFA-V3——基于人脸分割几何信息指导下的三维人脸重建
  • 求串长(不使用任何字符串库函数)
  • 第02章 MySQL环境搭建
  • linux系统编程 man查看manual.stat
  • 从网络到缓存:在Android中高效管理图片加载