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

try-catch-finally可能输出的答案?

try-catch-finally都有返回值时候的处理方案:

1、如果try、catch、finally分别都有返回值时候,最终finally的返回值会覆盖他们两个中的其中一个。
eg:


public static void main(String[] args) {System.out.println(testFinally());}public static String testFinally() {try {System.out.println("try block");int i =1/0;return "return in try"; // (1) 先计算返回值,但不立即返回} catch (RuntimeException e) {return "catch";} finally {return "return in finally"; // (2) finally 的 return 会覆盖 try 的 return}}

运行后的结果

try block
return in finally

2、如果 finally 没有返回值 只是有一段处理逻辑,在执行到return 语句时候 会先执行finally块里面代码的逻辑,然后才会返回return 之后的逻辑。
eg:

public class FinallyTest {public static void main(String[] args) {System.out.println(testFinally()); // 调用 testFinally() 并打印返回值}public static String testFinally() {try {System.out.println("try block"); // (1) 先执行return "return in try"; // (2) 计算返回值,但不立即返回} finally {System.out.println("finally block1"); // (3) 在 return 前执行System.out.println("finally block2"); // (4) 继续执行}// (5) 最后返回 try 中的 "return in try"}
}

运行结果:

try block
finally block1
finally block2
return in try

3、总结
一但遇到return语句之后就会先执行 finally 代码块里面的逻辑,如果finally代码块里面有return将作为最终结果返回,反之则是之前的代码块中的 return 作为结果返回。

http://www.dtcms.com/a/276107.html

相关文章:

  • Docker-镜像构建原因
  • C语言基础教程--从入门到精通
  • Spring Boot整合MyBatis+MySQL+Redis单表CRUD教程
  • STM32中的RTC(实时时钟)详解
  • R 语言绘制 10 种精美火山图:转录组差异基因可视化
  • JavaScript 常见10种设计模式
  • 码头智能哨兵:AI入侵检测系统如何终结废钢盗窃困局
  • Redis专题总结
  • MyBatis实现一对多,多对一,多对多查询
  • Golang操作MySQL json字段优雅写法
  • CPU缓存一致性协议:深入解析MESI协议与多核并发设计
  • HTML/JOSN复习总结
  • 7. JVM类加载器与双亲委派模型
  • PyQt5 — QTimeEdit 学习笔记
  • Java中的wait和notify、Condition接口的使用
  • 分类问题与多层感知机
  • pip国内镜像源一览
  • [es自动化更新] Updatecli编排配置.yaml | dockerfilePath值文件.yml
  • springboot+swagger2文档从swagger-bootstrap-ui更换为knife4j及文档接口参数不显示问题
  • 【高等数学】第三章 微分中值定理与导数的应用——第七节 曲率
  • DirectX Repair修复工具下载,.NET修复,DirectX修复
  • python 中 ‘5‘ 和 5 有什么本质区别?
  • 【深度学习】 1 Deep Learning
  • 12. JVM的垃圾回收器
  • LangChain 代理(Agents)学习
  • 网页五子棋-对战
  • python学习打卡:DAY 37 早停策略和模型权重的保存
  • web网站无法抓包排查;burp无法抓包情况
  • comfyUI-controlNet-线稿软边缘
  • c++中的STL