Java中try catch finally 中有异常和return时处理先后

public class TestDemo {
	private static String output = "";

	public static void foo(int i) {
		try {
			if (i == 1) {
				throw new Exception();
			}
		} catch (Exception e) {
			output += "2";
			return;
		} finally {
			output += "3";
		}
		output += "4";
	}

	public static void main(String[] args) {
		foo(0);
		foo(1);
		System.out.println(output);
	}
}

如上面的代码段

main方法中foo(0)执行时,会执行finally和最后的代码段

main方法中foo(1)执行时,因为i=1,所以走异常代码,catch块捕捉到了后,执行catch里的代码,return先不执行,执行完finally之后再执行return;

总结如下:

try catch finally执行顺序
                                                                          无
try块有异常-->catch代码块return关键字——————>执行catch块代码-->执行finally
                        |
                        |有
                        |_______
执行catch块return前面的代码-->执行finally-->执行catch块中的return

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值