JAVA面试题:try、finally和return的关系

Java异常获取中try-catch-finally块执行顺序实验探究 最近看面试题,发现这个比较好玩,try-catch-finally块的执行顺序问题。 一般认为,finally最后执行,做收尾工作,无论try块是否捕获异常,最后finally都会工作。但是这样还是比较笼统,如果没有catch,而是将异常抛出,让其他方法处理,那么是先进入其他方法还是先执行finally?如果try块中return了,那么finally还执行不执行?进一步,如果try、final... 阅读详情
public class Message {
    public static void main(String[] args){
        int result = m();
        System.out.println(result);
    }

    public static int m(){
        int i = 100;
        try{
            return i;
        }
        finally{
            i++;
        }
    }
}

 这里输出的 result 是100

最后返回值是100,因为 try 中的 return 其实已经被执行,因此i的值已经确定是100了,即return 100 ;
但是这个时候发现到了还有 finally 子句要执行,因此 finally 子句进行 i++,但是这个 i++ 并不影响 return 的值


证明就是把 i++ 语句改成 System.out.println(++i); 语句,如下:

public class Message {
    public static void main(String[] args){
        int result = m();
        System.out.println(result);
    }

    public static int m(){
        int i = 100;
        try{
            return i;
        }
        finally{
            System.out.println(++i);
        }
    }
}

运行结果:

 

结论:

方法体中的语句是自上而下一句句执行的,并且return语句执行时,返回值就已经确定了

使用 Simulink + Simscape Electrical 实现一个变压器耦合式单相全波整流器的仿真模型 本文介绍了基于Simulink的变压器耦合式单相全波整流器建模与仿真方法。详细说明了从项目创建、模块添加、电路搭建到参数配置的完整建模过程,重点分析了整流器的效率与损耗特性,包括变压器损耗和二极管导通损耗。通过仿真展示了输入输出波形特征,并提出了选用高效元件、优化变压器设计等改进建议。该案例为电力电子系统建模提供了实用参考,有助于深入理解整流电路工作原理和性能优化方法。 阅读详情

相关推荐

SpyGlass Lint脚本实战:从环境配置到报告生成的完整流程解析

本文详细解析了使用SpyGlass Lint脚本进行数字芯片设计代码质量检查的完整自动化流程。从环境配置、目录结构设计,到核心TCL脚本的编写与模块化配置,再到脚本执行、调试技巧及报告解读,提供了构建健壮、可维护自动化检查框架的实战指南。文章重点阐述了如何通过脚本实现从环境配置到报告生成的一键式操作,并探讨了与企业级CI/CD流程集成的进阶方案。

weixin_29196613的博客 439

JAVA自学之旅(四)

1.当方法返回数据类型不为void时,必须有return返回值才能成功。如果程序有类似如下片段 public static int m(){ int a= 10; if(a>3){ renturn 1;}} 并非绝对有return传出,因此报错。 但是如果是 public static int m(){ int a= 10; if(a>3){ return 1;} else{ ret...

coherence_yp的博客 187

玩转RecyclerView | 实现子视图叠加 | 3D画廊效果 | 高级动效 | Android 3D坐标系介绍

之前写的一篇文章展示了RecyclerView实现的画廊效果,适用于专辑/图片/列表浏览效果。本篇文章阐述如何基于RecyclerView实现如下图所示的3D画廊效果。以下效果的重点在于实现子视图的图层叠加,滑动过程中的3D旋转效果较为简单。(1)无3D旋转效果图片(1)带3D旋转效果图片。

qq_38237224的博客 8155

finally语句与return语句详解

文章目录1.return语句执行顺序1.1finally语句是在return语句执行之后,return语句返回之前执行的2.覆盖问题2.1finally块中的return语句会覆盖try块的return返回2.2如果finally语句没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改变也有可能不变3.异常情况3.1try块中的return语句在异常的情况下不会被执行3.2try中发生异常时,return写在catch语句中4.finally语句一定会被执行吗? 1.retur

qq_46804966的博客 9550

Vivado XDMA仿真实战:从配置到链路训练全解析

本文深入解析了Vivado中XDMA IP核的仿真实战流程,重点剖析了PCIe链路训练状态机(LTSSM)的工作原理与调试方法。通过搭建仿真环境、解读日志与波形,手把手指导如何从配置、链路训练(LTSSM)到BAR映射与DMA启动进行全流程分析与问题定位,帮助工程师掌握核心调试技能,确保PCIe链路稳定与数据传输正确。

weixin_29197051的博客 154

使用 git一个仓库管理多个项目

我们需要在 git 里面创建一个空分支,该分支不继承任何提交,没有父节点,完全是一个干净的分支,这时候就需要使用 orphan。该命令会创建一个新的分支,并且该分支有前一个分支下的所有文件,我们不想提交任何内容,所以我们需要把当前内容全部删除。此时 master 分支已经有一个项目了,下面我们创建新的分支管理另一个项目。此时可以在该分支目录上初始化你的项目,在执行 git 命令提交代码。此时我们就完成了在同一个仓库管理不同项目的需求了。下载仓库到本地之后,进入项目目录,查看分支信息。

xrs151的博客 2027

finally与return总结

如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。情况二:如果finally中没有return语句,也没有改变要返回值,则执行完finally中的语句后,会接着执行try中的return语句,返回之前保留的值。如果return的数据是基本数据类型,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值。

weixin_59640333的博客 2141

linux cma alloc fail 问题分析

摘要:日志显示CMA连续内存分配失败(错误码-ENOMEM),请求128页(512KB)内存时因CMA区域不足或内存碎片导致失败。分析发现系统CMA总内存131072KB,空闲65536KB。解决方案包括:1)手动触发内存碎片整理;2)修改设备树或内核配置增大CMA区域(如从16MB增至20MB)。通过调整CONFIG_CMA_SIZE_MBYTES或设备树中的size参数可解决该问题。

陌上花开缓缓归以的博客 797

Java中finally与return的执行顺序

在Java的异常处理中,try、catch 和 finally 是按顺序执行的。如果 try 中没有异常,则顺序为 try→finally,如果 try 中有异常,则顺序为 try→catch→finally。但是当 try、catch、finally 中加入 return 之后,return 和 finally 的执行顺序让很多人混淆不清。下面来分别说明一下。 1. try 和 catch 中带有return 1)try 中带有 return public class tryDemo { ...

骏马逸动,心随你动的博客 8637

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

多模态脑区细分图谱 HCP-MMP v1.0, Glasser et al. 2016 皮层和皮下区域,简写和全称对应关系

人类连接组计划多模态脑区细分图谱(HCP-MMP)提供了对人类大脑皮层区域的非常有用的细分(Glasser et al. 2016a, b)。图谱是多模态的,因为每个区域都是根据四个标准的组合定义的,包括结构(T1加权/T2加权髓鞘含量和皮层厚度图)、静息态功能连接、基于任务的激活和拓扑地形组织。HCP-MMP v1.0图谱包含每个半球180个皮层区域,基于210名参与者的分析。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2619

Java中finally和return的执行顺序

中的内容一定是会被执行的,一般用来释放资源,并确保某些操作一定会执行。是一种针对程序运行时出错的响应手段,对于一些可以预料到的出错类型,在发生时对其进行报告和补救。这就是Java到底是传值还是传址的问题了,简单来说就是:Java中只有传值没有传址,这也是为什么。就变成不可到达语句了,也就是永远不能被执行到,所以需要注释掉否则编译器报错。后的语句中的内容是对应的错误类型。不会被执行到,而是接着执行捕获异常的。语句先执行,确定了返回值后再去执行。中的语句报错了,那么就转入对应的。语句中执行处理异常的措施,

tracy的博客 3328

2026快手爬虫终极指南:JA4+指纹绕过+sign全逆向+AES响应解密(附可运行代码)

快手2026反爬破解实战指南 本文深入剖析快手2026年最新反爬体系,提供完整的破解方案: 四层防御体系:从传输层(JA4+指纹)、应用层(sign参数)、设备层到行为层,90%的爬虫在前两层即被拦截 JA4+指纹绕过:使用curl_cffi模拟Chrome 124的TLS指纹,完美匹配真实浏览器特征 sign参数逆向:通过动态调试提取加密逻辑,Python实现MD5签名算法,包含参数排序和盐值处理 响应解密:破解AES-GCM加密接口数据,完整还原响应内容 技术亮点: 使用curl-impersonate

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1802

java异常深入理解与提升(含面试题)

前言 作为一个java开发者,异常肯定是天天都在使用的,但是很多时候我们对异常的了解、认知都只是停留在表面。好像现在不会多线程、高并发、微服务、性能调优、容器……这些高逼格的东西,都不好意思说自己是java开发,诚然,这些东西是很重要,但是基础、本质的东西一样重要。今天我就“详细、深入”的学习一下java中的异常,包括体系结构、异常处理、自己使用、异常本质、细节等等,吃透这些东西,能让我们更好的理解、学习java,当然,异常相关的面试题也将不在话下。当然,受限于个人水平、认知、经验等等因素,如果发现错误,还

ql_7256的博客 1197

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

try、catch、finally、return执行顺序超详解析(针对面试题)

try、catch、finally、return执行顺序超详解析(针对面试题) 有关try、catch、finally和return执行顺序的题目在面试题中可谓是频频出现。总结一下此类问题几种情况。 写在前面 不管try中是否出现异常,finally块中的代码都会执行; 当try和catch中有return时,finally依然会执行; finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍

weixin_45759791的博客 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java如果在try,catch里面执行return,那么还会不会执行finally?

点赞关注,不会迷路! 总结: 1、不管有没有异常,finally中的代码都会执行 2、当try、catch中有return时,finally中的代码依然会继续执行 3、finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的。 4、如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改...

weixin_50333534的博客 5578

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java try 与 finally 对于返回值的影响

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

2401_83601703的博客 1088

try、catch、finally巧遇return

Java异常处理          Java的基本理念是“结构不佳的代码不能运行”--Thinking in Java。          Java中的异常处理是一种在编译阶段的错误报告机制,是通过编译器强制执行的。不过尚须明白的 是:编译期间并不能找出所有的错误,余下的问题必须在运行期间解决。          简单的来说,异常处理目的在于通过少量的代码是你的程序更加可靠。 try、c

LCore的专栏 4629

try、catch、finally、return执行顺序超详解析与throw与throws区别

【代码】try、catch、finally、return执行顺序超详解析与throw与throws区别。

CHEN_DA_PING的博客 2612

在java中如何处理finally块中的抛出异常以及finally和return的一些细节

文章目录First point :finally和return的小细节回顾One question——finally块中使用return会抑制异常的冒泡传输Second point:finally中可能抛出的异常如何处理? First point :finally和return的小细节回顾 在 finally 代码块中改变返回值并不会改变最后返回的内容。且它一定会被执行! 总结为以下几条: 1、当 try 代码块和 catch 代码块中有 return 语句时,finally 仍然会被执行。 2、执行 t

LH is programming hard 7338

Java面试-try-catch-finally 中的 return 语句执行顺序揭秘

📌 Java面试精要:try-catch-finally中的return执行顺序解析 核心结论: 正常流程:try/catch中的return会先暂存返回值,执行finally后再返回。finally中对基本类型的修改不影响返回值(实验1返回1),但会修改引用对象内容(实验2返回"try-1-finally")。 危险操作:finally中的return会完全覆盖try/catch的返回值(实验4返回3),并可能导致异常丢失(实验5)。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

有关try{}catch{}finally{}面试题

前言 在java中,想必大家都会用到try{}catch{}finally{},try中是来包裹可能会出现异常的代码,catch{}是抛出异常,finally{}是必须执行的代码。但是具体的细节可能没有去深究,今天就带大家来看看常见的面试题。 情况1 public int test() { int i=1; try { System.err.println("try i:"+i); return i; }ca

《落程魄序》作者“落魄哥”的博客 1196

Java面试题 try.catch语句中存在return和finally中语句的执行顺序?

Java中的try.catch语句中的finally和return同时存在时,finally语句是否会执行,若执行,那么执行顺序是什么? 结论: 不管有没有异常,finally块中代码都会执行; 当try.catch中有return时,finally仍然会执行; finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。 在执行时,是return语句先把返回值写入内存中,然后停下来等待finally语句块执行完,return再执行后面的一段。 至于返回值到底

单枪匹码 1590

try catch finally中return的执行顺序

参考博客 没有异常发生时 public class ReturnDemo { public static void main(String[] args) { // 为了方便看,我把每个方法的输出,以及返回值,放在了方法上面 System.out.println(method1()); System.out.println("--->");...

小识的博客 2030

try catch和finally搭配return执行常见面试题讲解

我们都知道,在Java中try、catch和finally常用来做异常处理,而且他们有执行顺序,即先执行try,如果try中没有异常,则执行完try语句块后执行finally语句块,如果try中有异常,则顺序为执行到try语句块抛异常的地方后跳到catch语句块,最后执行fianlly语句块,但是当try、catch、finally中加入return之后,情况就有不同了,我们下面分别结合常见面试题...

weixin_39309402的博客 983
上一篇: Java实验1:酒店管理系统
下一篇: JAVA函数笔记
The_RedMaple
博客等级 码龄7年 375粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值