面试官:`try { return “a“; } finally { return “b“; }` 到底返回什么?99% 的人第一次都答错了!
Java 面试中经常会出现这样一道经典题publicstaticStringtest(){try{returna;}finally{returnb;}}很多人第一反应是返回a因为try先执行。也有人认为finally只是执行一下不会影响返回值。其实这两种答案都错了。正确答案是b为什么今天我们就把这道经典面试题彻底讲明白。一、为什么返回的是b很多初学者认为try{returna;}执行到这里方法就已经结束了。实际上Java 并不是这样工作的。当执行到returna;JVM 并不会立刻返回而是会经历下面几个步骤执行 try ↓ 遇到 return a ↓ 先把返回值保存起来 ↓ 执行 finally ↓ finally 中又执行 return b ↓ 覆盖之前保存的返回值 ↓ 最终返回 b所以try{returna;}finally{returnb;}最终返回b二、可以理解成下面这段伪代码为了方便理解可以把 JVM 的执行过程想象成Stringresult;try{resulta;}finally{resultb;}returnresult;虽然真正的 JVM 不是这样实现的但这样理解非常容易记忆。最后result b因此返回b三、如果 finally 没有 return 呢例如publicstaticStringtest(){try{returna;}finally{System.out.println(finally);}}输出finally a原因很简单finally只是执行了一段代码并没有修改返回值。所以返回仍然是 a。四、finally 中写 return 有什么问题来看下面这段代码publicstaticinttest(){try{inta10/0;return1;}finally{return2;}}很多人会认为应该抛出ArithmeticException实际上运行结果却是2为什么因为finally{return2;}不仅覆盖了return1;甚至连ArithmeticException也一起吞掉了。这意味着异常不会继续向外抛出。这也是为什么很多 Java 开发规范都明确要求不要在 finally 中写 return。五、实际开发中为什么不推荐这样写主要有两个原因第一会覆盖 try 或 catch 中的返回值。程序原本应该返回的数据可能被finally改掉容易造成逻辑错误。第二会吞掉异常。如果try中发生异常而finally又执行了return异常就不会继续抛出排查问题会变得非常困难。因此在企业开发中finally一般只负责关闭数据库连接关闭文件流释放锁清理资源而不会写return。六、面试如何回答如果面试官问try { return a; } finally { return b; }返回什么为什么可以这样回答最终返回b。因为try中执行return时JVM 会先保存返回值但不会立即返回而是继续执行finally。如果finally中也有return它会覆盖try中保存的返回值因此最终返回b。另外在实际开发中不建议在finally中写return因为它不仅会覆盖返回值还可能吞掉异常。七、总结记住下面几点即可try中的return不会立即返回。JVM 会先执行finally。如果finally中也有return会覆盖try的返回值。finally中的return还可能吞掉异常因此实际开发中应避免使用。一句话总结try中的return会先保存返回值但真正返回前一定会执行finally如果finally中也有return最终返回的一定是finally的结果。

相关新闻

Spleeter音频分离技术深度解析:从基础应用到高级定制

Spleeter音频分离技术深度解析:从基础应用到高级定制

Spleeter音频分离技术深度解析:从基础应用到高级定制 【免费下载链接】spleeter Deezer source separation library including pretrained models. 项目地址: https://gitcode.com/gh_mirrors/sp/spleeter Spleeter是Deezer开发的开源音频分离库,…

2026/10/2 3:49:33 阅读更多 →
AI数字人直播突然被下架?揭秘监管新规生效倒计时48小时内的3步紧急合规加固法

AI数字人直播突然被下架?揭秘监管新规生效倒计时48小时内的3步紧急合规加固法

更多请点击: https://intelliparadigm.com 第一章:AI数字人直播突然被下架的监管动因与政策转折点 近期,多家平台集中下架AI数字人直播服务,引发行业广泛关注。这一骤然调整并非孤立事件,而是监管体系对生成式AI应用风…

2026/10/9 18:19:06 阅读更多 →
小白买湖北苗木:避坑指南看这篇就够

小白买湖北苗木:避坑指南看这篇就够

咱小白第一次买湖北苗木,是不是总犯愁?怕买贵了、怕苗种下去死了、怕找不到靠谱卖家?其实选苗没那么复杂,今天就唠唠实用干货,连行业里口碑不错的荆州市楚地源园林绿化有限公司都是按这些标准来的,跟着学准…

2026/10/7 3:39:04 阅读更多 →

最新新闻

litellm实战:用统一网关解决多模型接入与成本治理

litellm实战:用统一网关解决多模型接入与成本治理

项目名就叫 litellm。第一次看到这个名字,很多人以为它又是一个“模型封装库”,但实际用下来,它做的事比“封装”大得多:把几十家模型服务统一成一套接口,顺手把路由、重试、预算、监控全接进来。去年我搭一个多模型评…

2026/10/12 5:01:57 阅读更多 →
UCI心脏疾病数据Python实战:从清洗到建模的完整指南

UCI心脏疾病数据Python实战:从清洗到建模的完整指南

简介:适用于计算机专业毕业设计、课程设计或期末大作业的完整实践资源,围绕UCI心脏病数据集展开数据分析,通过预处理、可视化与机器学习建模识别心脏病风险因素。资源包含Python源码、数据集、分析报告和答辩PPT,共70个文件&#…

2026/10/12 5:01:57 阅读更多 →
1Password涨价背后:订阅制与买断制密码管理器怎么选?

1Password涨价背后:订阅制与买断制密码管理器怎么选?

1Password 涨价这事,这几天好几个朋友转给我看,说个人版一年涨了三分之一,家庭版涨得更狠,问我是不是该考虑换个密码管理器。刚好我也一直在研究这个品类,标题里提到的“168元终身版”我也实际买过、用过一阵子&#x…

2026/10/12 5:01:57 阅读更多 →
Agent技能体系设计实战:从函数堆到可复用、可编排的工程化架构

Agent技能体系设计实战:从函数堆到可复用、可编排的工程化架构

聊到Agent开发,很多人第一反应是:这不就是给大模型套个循环,再挂几个工具函数吗?我一开始也这么想,直到亲手把一个Demo性质的Agent往真实场景里推,才发现最大的短板根本不是模型能力,而是那堆散…

2026/10/12 5:01:57 阅读更多 →
APP 只写了 4KB,FileSystem 却等了 80ms:HarmonyOS 7 怎么分清逻辑 I/O、物理 I/O 和排队

APP 只写了 4KB,FileSystem 却等了 80ms:HarmonyOS 7 怎么分清逻辑 I/O、物理 I/O 和排队

APP 只写了 4KB,FileSystem 却等了 80ms:HarmonyOS 7 怎么分清逻辑 I/O、物理 I/O 和排队 DevEco Studio 26.0 新增 FileSystem 模板,分别展示应用逻辑读写、物理读写、调用栈和 Frame。当前官方文档注明该能力仅在中国大陆可用,…

2026/10/12 5:01:57 阅读更多 →
InterviewGuide Redis 进阶面试指南:主从复制、哨兵高可用、集群寻址与缓存一致性

InterviewGuide Redis 进阶面试指南:主从复制、哨兵高可用、集群寻址与缓存一致性

文档教程知识库 【免费下载链接】InterviewGuide 🔥🔥「InterviewGuide」是阿秀从校园->职场多年计算机自学过程的记录以及学弟学妹们计算机校招&秋招经验总结文章的汇总,包括但不限于C/C 、Golang、JavaScript、Vue、操作系统、数据结…

2026/10/12 5:00:56 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →