return与finally执行优先级

Java异常处理与finally块
本文探讨了Java中异常处理的机制,特别是try-catch-finally结构的行为。通过三个示例,展示了当try块和catch块中的return语句与finally块中的return语句同时存在时,程序将如何执行。强调了finally块中的return语句会覆盖try和catch块中的return语句,即使异常发生也不例外。
public class Main{
	public static void main(String[] args) {
		System.out.println(test());
		
	}
	private static int test(){
		int[] a={1,2};
		try{
			a[2]=3;
			return 0;
		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("ArrayIndexOutOfBoundsException");
			//return 1;
		}catch(RuntimeException e){
			System.out.println("RuntimeException");
			//return 1;
		}catch(Exception e){
			System.out.println("Exception");
			//return 1;
		}finally{
			System.out.println("finally");
			return 2;
		}
		//return 3;
	}
}

结果:

ArrayIndexOutOfBoundsException
finally
2

 

public class Main{
	public static void main(String[] args) {
		System.out.println(test());
		
	}
	private static int test(){
		int[] a={1,2};
		try{
			a[2]=3;
			//return 0;
		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("ArrayIndexOutOfBoundsException");
			return 1;
		}catch(RuntimeException e){
			System.out.println("RuntimeException");
			return 1;
		}catch(Exception e){
			System.out.println("Exception");
			return 1;
		}finally{
			System.out.println("finally");
			return 2;
		}
		//return 3;
	}
}

结果:

ArrayIndexOutOfBoundsException
finally
2
 

public class Main{
	public static void main(String[] args) {
		System.out.println(test());
		
	}
	private static int test(){
		int[] a={1,2};
		try{
			a[2]=3;
			//return 0;
		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("ArrayIndexOutOfBoundsException");
			return 1;
		}catch(RuntimeException e){
			System.out.println("RuntimeException");
			return 1;
		}catch(Exception e){
			System.out.println("Exception");
			return 1;
		}finally{
			System.out.println("finally");
			//return 2;
		}
		return 3;
	}
}

结果;

ArrayIndexOutOfBoundsException
finally
1

此处try里的return被注掉了,因为如果不注掉的话最后一个return就永远无法执行,会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值