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

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

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

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

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

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

2026/7/21 19:30:56 阅读更多 →

最新新闻

计算机毕业设计之智慧校园出行平台

计算机毕业设计之智慧校园出行平台

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

2026/7/22 15:25:53 阅读更多 →
本地部署通义千问Qwen3与WinClaw智能网关集成指南

本地部署通义千问Qwen3与WinClaw智能网关集成指南

1. 项目概述最近在折腾一个挺有意思的项目——把阿里云的通义千问Qwen3大模型接入到WinClaw这个Windows平台上的智能网关工具里。WinClaw其实是OpenClaw的Windows适配版本,主要功能是作为大语言模型和本地系统操作之间的桥梁。简单来说,就是让AI不仅能跟…

2026/7/22 15:25:53 阅读更多 →
(Python基础教程之十七)Python OrderedDict –有序字典

(Python基础教程之十七)Python OrderedDict –有序字典

一个OrderedDict 维护插入顺序添加到字典中的项目。项目的顺序在迭代或序列化时也会保留。 1. Python OrderedDict示例 OrderedDict 是python collections模块的一部分。 要轻松构建OrderedDict,可以OrderedDict在collections模块中使用。 OrderedDictExample.py from col…

2026/7/22 15:25:53 阅读更多 →
大模型如何重构软件研发全流程:从需求分析到代码生成

大模型如何重构软件研发全流程:从需求分析到代码生成

1. 大模型如何重构软件研发全流程当我在2023年首次将GPT-4接入团队的CI/CD流水线时,原本需要3天完成的需求评审-原型设计周期被压缩到了4小时。这不仅仅是效率的提升,更标志着软件开发范式正在经历从"人工驱动"到"AI协同"的根本性转…

2026/7/22 15:25:53 阅读更多 →
计算机毕业设计之基于SpringBoot的手工艺品销售平台设计与开发

计算机毕业设计之基于SpringBoot的手工艺品销售平台设计与开发

在全球化与信息化的背景下,中国传统手工艺作为中华文化瑰宝,面临市场萎缩和技艺传承断层等挑战。随着电子商务的兴起和互联网技术的发展,构建一个基于Spring Boot的手工艺品销售平台显得尤为重要。本手工艺品销售平台采用Java语言开发&#x…

2026/7/22 15:25:53 阅读更多 →
(Python基础教程之六)Python中的关键字

(Python基础教程之六)Python中的关键字

Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字

2026/7/22 15:24:52 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

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

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

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

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/22 12:54:44 阅读更多 →

月新闻