Java学习手册:finally块中的代码什么时候被执行?

Java的finally块确保代码在异常或正常退出时执行。即使在return语句中,finally也会在return之前执行。然而,如果在try块之前或通过System.exit(0)强制退出,finally块可能不会执行。对于基本类型,finally中的修改不影响返回值,但对引用类型的返回值可以改变。
摘要由CSDN通过智能技术生成

一、finally块中的代码什么时候被执行?

在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定被执行。由于程序执行return就意味着结束对当前函数的调用并跳出这个函数体,因此任何语句要执行都只能在return前执行(除非碰到exit函数),因此finally块中的代码也是在return前执行的。此外,如果try-finally或者catch-finally中都有return,那么finally块中的return语句将会覆盖别处的return语句,最终返回调用者那里的是finally中return的值。

//Demo1:在执行return语句前先执行finally块中的代码
package com.haobi;

public class Test1 {
   
	public static int testFinally(){
   
		try {
   
			return 1;
		} catch (Exception e) {
   
			return 2;
		}finally {
   
			System.out.println("execute finally");
		}
	}
	
	public static void main(String[] args) {
   
		int result = testFinally();
		System.out.println(result);
	}
}
//程序输出结果如下:
execute finally
1

//Demo2:当finally块中有return语句时,将会覆盖函数中其他return语句
package com.haobi;

public class Test2 {
   
	public static int testFinally(){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值