Java中try-catch-finally结合return执行顺序

时间:2021-12-07 18:22:32

对于异常捕获及返回执行顺序的实验和总结

  • try{code1;return1} catch{code2;return2} finally {code3}
 1  public static void main(String[] args) {
 2         int flag=testtrycatch();
 3         System.out.println("flag:"+flag);
 4     }
 5     static int testtrycatch(){
 6             try {
 7                 int value =1/1;
 8                 return  111111;
 9             }catch (Exception e) {
10                 System.out.println("catch"+e);
11                 return  222222;
12             }finally {
13                 System.out.println("finally");
14             }
15     }

无异常的返回,程序执行顺序是code1—code3—return1;

输出:flag=111111

有异常的返回,程序执行顺序是code2—code3—return2;

输出:flag=222222

 

  • try{code1;return1} catch{code2} finally {code3}returnx
 1     public static void main(String[] args) {
 2         int flag=testtrycatch();
 3         System.out.println(flag);
 4     }
 5     static int testtrycatch(){
 6             try {
 7                 int value =1/0;
 8                 return  111111;
 9             }catch (Exception e) {
10                 System.out.println("catch"+e);
11             }finally {
12                 System.out.println("finally");
13             }
14         return  333333;
15     }

无异常的返回,程序执行顺序是code1—code3—return1;

输出:flag=111111

有异常的返回,程序执行顺序是code2—code3—returnx;

输出:flag=333333

 

  • try{code1;return1} catch{code2} finally {code3,return3}
 1     public static void main(String[] args) {
 2         int flag=testtrycatch();
 3         System.out.println(flag);
 4     }
 5     static int testtrycatch(){
 6             try {
 7                 int value =1/1;
 8                 return  111111;
 9             }catch (Exception e) {
10                 System.out.println("catch"+e);
11             }finally {
12                 System.out.println("finally");
13                 return  666666;
14             }
15     }

无异常的返回,程序执行顺序是code1—code3—return3;

输出:flag=666666

有异常的返回,程序执行顺序是code2—code3—return3;

输出:flag=666666