面试官:`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/7/24 6:47:12 阅读更多 →
AI数字人直播突然被下架?揭秘监管新规生效倒计时48小时内的3步紧急合规加固法

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

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

2026/7/24 4:15:56 阅读更多 →
小白买湖北苗木:避坑指南看这篇就够

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

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

2026/7/23 8:36:16 阅读更多 →

最新新闻

AI如何提升学术写作效率:智能开题报告解决方案

AI如何提升学术写作效率:智能开题报告解决方案

1. 学术写作痛点与解决方案写开题报告可能是每个研究生最头疼的事情之一。我至今还记得自己当年面对空白文档时的茫然无措——明明看了几十篇文献,却不知如何组织思路;好不容易憋出几段文字,又被导师批"逻辑混乱"打回重做。这种痛苦…

2026/7/25 3:23:43 阅读更多 →
无人机飞控管理系统(大疆生态)`#大疆无人机` `#飞控系统` `#无人机平台` `#MSDK` `#上云API` `#行业应用` `#电力巡检` `#城市安防` `#应急救援` `#智慧管理`

无人机飞控管理系统(大疆生态)`#大疆无人机` `#飞控系统` `#无人机平台` `#MSDK` `#上云API` `#行业应用` `#电力巡检` `#城市安防` `#应急救援` `#智慧管理`

无人机飞控系统 基于大疆生态(msdk,上云api)开发,适配大疆行业:大疆机场,经纬M400,M350,M300,御三行业版等,支持对接第三方机场、移动机巢。 支持: 远程飞行控制 无人机直播推流 红外…

2026/7/25 3:23:43 阅读更多 →
AI工具提升学术写作效率的全方位指南

AI工具提升学术写作效率的全方位指南

1. 学术写作效率革命:AI工具全景指南 读研三年,写论文占去两年半——这个在研究生群体中流传的段子道尽了学术写作的艰辛。去年指导实验室几位研究生论文时,我发现他们80%的时间消耗在文献梳理、格式调整和语言润色这些机械劳动上&#xff0c…

2026/7/25 3:23:43 阅读更多 →
从传统NLP到大语言模型:技术演进与实践指南

从传统NLP到大语言模型:技术演进与实践指南

1. 从传统NLP到LLM驱动的范式转变 十年前我在处理客服工单分类项目时,花了三个月时间构建规则引擎和特征工程,准确率勉强达到82%。如今用GPT-3.5的zero-shot能力,十分钟就能达到92%准确度——这个对比直观展现了LLM如何重构自然语言理解的技术…

2026/7/25 3:23:42 阅读更多 →
大模型应用开发:核心能力与实战指南

大模型应用开发:核心能力与实战指南

1. 为什么大模型应用开发是未来三年的黄金赛道过去一年,大模型技术从实验室快速走向产业化落地。根据行业调研数据显示,全球大模型相关岗位需求同比增长超过300%,头部科技公司为资深大模型工程师开出的年薪普遍超过150万。这个现象背后是三个…

2026/7/25 3:23:42 阅读更多 →
大模型学习路线:数学基础与工程实践全解析

大模型学习路线:数学基础与工程实践全解析

1. 大模型学习路线全景图2026年的大模型技术发展已经进入深水区,不再只是研究机构的专属玩具,而是渗透到了各行各业的实际业务场景中。作为一名从2018年就开始接触Transformer架构的老兵,我完整经历了从BERT到GPT-4的技术演进历程&#xff0c…

2026/7/25 3:22:42 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻