欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java异常处理顺序

程序员文章站 2024-02-09 17:12:34
...

对Java异常处理程序try\catch\finally\return做以下测试:

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

运行得到以下顺序:
1, 2, 3, -3
对应版块运行顺序为:
try - catch - finally - finally return

注释掉finally板块的return -3;
运行得到以下顺序:
1, 2, 3, -2
对应版块顺序为:
try - catch - finally - catch return

注释掉catch板块的return -2; 并将最末尾return 0;注释去掉
运行得到以下顺序:
1, 2, 3, 0
对应版块顺序为:try - catch - finally - catch - return

抛出异常时顺序为:
try - catch - finally - (finally return若存在直接返回)- catch - (catch return若存在直接返回)- return

注释掉抛出异常的语句 int a = 1/0;
发现最后的return 0报错,不能到达,故其最后执行,也注释掉。
首先测试以下代码:

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

得到结果:
1 , 3 , -3
执行顺序为:
try - finally - finally return
注释掉finally模块的return -3
得结果:
1, 3, -1
执行顺序为:
try - finally - try return

未抛出异常时顺序
try - finally - (finally return 若存在直接退出)- (try return 若存在直接退出)- return

相关标签: 软件构造学习