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
上一篇: PHPVSASP