Java基础——try finally执行顺序

Java关于Try-Catch-Finally的执行顺序和Return值问题总结 一:执行顺序问题 1.当三个代码块都有代码时: (1)首先执行Try代码块,如果Try代码块顺利执行,就直接执行Finally代码块。 (2)首先执行Try代码块,如果Try代码块发生异常,就会执行Catch代码块,最后执行Finally代码块。 2.当只有Try和Finally代码块时: (1)首先执行Try代码块,如果Try代码块顺利执行,就直接执行Finally代码块。 ... 阅读详情

首先要确定的一点是,不管有没有出现异常,finally块中代码都会执行

1.try有return语句,finally没有return语句,返回的是在执行finally语句之前,try里面就确定好的值

有如下代码

package test;

public class TryFinallyTest {
	
	public static void main(String[] args) {
		int i = tryfinally();
		System.out.println(i);
	}
	
	public static int tryfinally(){
		int i = 1;
		try{
			i++;
			return i;
		}finally{
			i++;
		}
	}

}


//输出结果:2

 

执行顺序是这样的,先执行try块的代码,遇到了return语句,但是没有立即返回,而是将要return的值(这里是2),暂存起来,继而执行finally块的代码;等finally块的代码执行完了(此时i=3),再返回try块的return语句(返回之前暂存的2,而不是3)。

 

2.try有return,finally也有return,返回的是finally语句执行之后,确定的值

 

package test;

public class TryFinallyTest {
	
	public static void main(String[] args) {
		int i = tryfinally();
		System.out.println(i);
	}
	
	public static int tryfinally(){
		int i = 1;
		try{
			i++;
			return i;
		}finally{
			i++;
			return -1;
		}
	}

}

//输出结果:-1

 

 

 

 

 

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

相关推荐

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3669

try--finally的执行顺序

为了保持这一顺序的严谨性,让中间变量j参与finally运行,而在try中保持原有i的值,看上去就像是先执行了try,再finally,符合程序的运行顺序。这很合理,finally优先执行(如果不优先执行,将意味着finally不被执行),然后i++,i的值变为11,再return。因为 try–finally的执行顺序明显违反了程序亘古不变的自上而下的运行顺序。try–finally的执行顺序是肯定的,但结果与顺序是否定的。try里面是10,就意味着finally的i++没被执行?

HHBBL的博客 313

从婴儿学步到工业级应用:VLA的‘隐式标定‘原理通俗图解

本文深入解析VLA(Vision-Language-Action)模型的'隐式标定'原理,通过类比婴儿学习机制,揭示其如何替代传统手眼标定技术。文章对比了工业机器人传统标定与VLA数据驱动方法的差异,并可视化神经网络注意力机制,展示其在空间关系编码上的突破性进展。最后探讨了VLA在工业应用中的优势与混合架构解决方案。

pz890123456的博客 324

try、catch、finally的执行顺序

1. 不带return的执行顺序 异常处理中,try、catch、finally的执行顺序: 如果try中没有异常,执行顺序为:try->finally 如果try中有异常,执行顺序为:try->catch->finally public class Test { public static int rank; public static void main(String[] args) { rank = 1; solve2(); System.ou

xingyu19911016的博客 1万+

SPARTAN6 + Verilog - FPGA step by step 从0开始学习(1)

SPARTAN6 + Verilog - FPGA step by step 从0开始学习(1)Step 1 软件安装Step 2 硬件获取Step 3 开始从头到脚建一个工程Step 3.1 新建一个工程 从0开始学习FPGA,最好的办法就是先建一个最简单的模块,并且跑起来,然后再慢慢展开。下面这个例子是要按照一定的周期点亮核心板上的一个led。 Step 1 软件安装 这个从0开始学习是用的xilinx的SPARTAN6。SPARTAN6集成开发环境用ISE,不能用Vivado,各自对应的版本不同。安装

xfacexx点点记录 5513

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

try和finally执行顺序

结论: 1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的; 4、finally

Guo_guo 2365

2080Ti双卡开启NVLink

本文介绍了如何在Ubuntu 22.04系统下给2080Ti双卡开启NVLink的方法。

flymyd的博客 2900

try finally执行顺序

try语句在返回前,将其他所有的操作执行完,保留好要返回的值,而后转入执行finally中的语句,而后分为以下三种情况: 情况一:如果finally中有return语句,则会将try中的return语句”覆盖“掉,直接执行finally中的return语句,得到返回值,这样便无法得到try之前保留好的返回值。 情况二:如果finally中没有return语句,也没有改变要返回值,则执行完finally中的语句后,会接着执行try中的return语句,返回之前保留的值。 情况三:如果finally中没有r

Azadoo的博客 2953

避坑指南:从聚宽迁移到QMT必须知道的5个细节(含Redis连接异常处理)

本文详细解析了从聚宽迁移到QMT平台时需注意的5个关键细节,特别是Redis连接池优化和xtquant重连机制。通过实战代码示例,帮助量化团队解决信号传递稳定性、时间同步、滑点控制等核心问题,确保交易策略平稳过渡。

weixin_27303545的博客 429

SAP_SD模块-销售批次策略应用记录

SAP_SD模块-销售批次策略完整案例

风沙的博客 2610

Java中try,catch,finally执行顺序

Java中try,catch,finally代码执行顺序是怎么样的?如果带有return又是怎样的?这是面试常考的一个问题。 先给出结论: 1.如果try中没有异常,则顺序为try→finally;如果try中有异常,顺序为try→catch→finally,并且异常之后的代码不会执行。 2.当try或catch中带有return时,会先执行return前的代码,然后暂时保存需要return的信息,再执行finally中的代码,最后再通过return返回之前保存的信息。 还要注意,如果return的

Humphrey0313 4664

被Cloudflare 5秒盾虐了半个月,终用Python破局:UA+TLS指纹伪装实战,拦截率从42%干到3%

其实5秒盾不难破,难的是摸透它的检测逻辑——它不是“一刀切”地拦截爬虫,而是通过“多维度指纹校验”,判断你是不是“真实用户”。表层:UA和HTTP头要完整、匹配;中层:TLS指纹要和真实浏览器一致(核心);深层:行为要符合人类习惯(请求间隔、JS执行)。这套方案不仅适用于Cloudflare 5秒盾,很多基于指纹检测的反爬系统(如Akamai、Imperva)也适用。2025年的爬虫,早已不是“能爬就行”,而是“爬得稳、不被封”——指纹伪装就是实现这一点的关键。

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

Java 的 try catch finally 执行顺序

Java 的 try catch finally 执行顺序

26857259 2357

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java在异常处理中try、catch、finally的执行顺序

通过学习Java的异常处理,知道它是通过try-catch-finally来实现的,那么就有一个疑问?他们的执行顺序是如何的,接下来我将tong'g

qq_48241564的博客 6104

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java中try-catch-finally执行顺序研究

java中try-catch-finally执行顺序研究 不管有没有出现异常,finally代码块都会执行; 不管try和catch的代码块中有return时,finally仍会执行,且如果finally代码块也有return,则此代码肯定会返回finally执行的return值。 这两点,想必是都知道的,我这边说一种特殊情况,别再入坑了!!! 首先看一个例子 代码如下: package cn.lbl.face.Test; public class tryCatch { public

水巷石子的博客 4683

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Java】try,catch,finally执行顺序

0个return try{}    catch(){}    finally{} 按顺序执行 1个return try{return;}    catch(){}    finally{} 先执行 try 里 return 之前的语句, ...

黄骏捷的博客 720

Java try、catch、finally执行顺序

Java中,try块,catch块,finally块的常见执行顺序分为有异常和无异常。无异常:try->finally;有异常:try->catch->finally。根据这两种情况,跑一遍无返回值和有返回值的具体执行变化 创建一个测试类,编写异常捕获的测试函数 在项目pom文件中添加测试类依赖 <dependency> <groupId>org.springframework.boot</groupId> <ar

weixin_43914164的博客 2637

Java try catch finally的执行顺序

在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行? 第一种情况:try中包含return语句,finally中不包含. public class Hello{ public static void main(String[] args) { Hello h1=new Hello(); System.out

koches的专栏 2931

Java中try、catch、finally语句块的执行顺序

一、我们将try{}catch(){}finally{}分成以下几种情况分别验证: 场景1:try{return;}catch{}finally{} return; public static int returnSttat(int i) { System.out.println(&quot;return block&quot;); return i; } ...

换了马甲的小强的博客 8671

try finally执行顺序 python_Java.try catch finally 的执行顺序说明

示例1:public static String hello() {String s = "商务";try {return s;} catch (Exception e) {return "catch进来了";} finally {s = "你好世界";return s;}}返回结果:你好世界,此时的返回顺序是 finally > try示例2:public static String he...

weixin_39986435的博客 472

java中的try catch finally return的执行顺序问题总结

在java中我们经常会遇到关于捕获异常的处理,下面总结了所有的关于try  catch finally return的执行顺序的问题的例子。 1.在finally后面不跟ruturn语句 1.1  在这种形式下try{  return; }catch{}finally{},如果try中没有异常就执行finally中的语句,如果有异常就执行catch和finally中的语句    有异常:

12的博客 4656

【Java】try-catch-finally语句中return的执行顺序思考

实验1、try中有return,finally中没有public class TryCatchTest { public static void main(String[] args) { System.out.println("test()函数返回:" + test()); } private static int test(){ int i =

Mlib 1478

java try catch finally执行顺序总结

目录 返回值的执行顺序 finally语句在return语句执行之后return返回之前执行的 finally块中的return语句会覆盖try块中的return返回 如果finally语句中没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改变也可能不变 try块里的return语句在异常的情况下不会被执行,这样具体返回哪个看情况 当发生异常后,catch中的return执行情况与未发生异常时try中return的执行情况完全一样 总结 抛出异常 catch

今天吃了吗的博客 658

java finally什么时候执行_Java.try catch finally 的执行顺序说明

示例1:public static String hello() {String s = "商务";try {return s;} catch (Exception e) {return "catch进来了";} finally {s = "你好世界";return s;}}返回结果:你好世界,此时的返回顺序是 finally > try示例2:public static String he...

weixin_42515687的博客 557

java中try、catch、finally、return的执行顺序

有return的时候try…catch…finally的执行顺序可以分为如下几种: 情况一 try{}…catch{}…finally{} return 正常执行 //第一种情况,正常执行 public static int test1() { int i = 0; try { i++; // 执行 } catch (Exception e) { i++; } finally {

weixin_44061521的博客 726
上一篇: HashMap中按key排序
下一篇: Java基础——for循环及其优化
冷静BB
博客等级 码龄12年 298粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值