java try-catch-finally的执行顺序

public class TryCatchFinallyTest {

    public static void main(String[] args) {
        demo01();
        System.out.println(String.valueOf(demo02()));
        System.out.println(String.valueOf(demo03()));
        System.out.println(String.valueOf(demo04()));
        System.out.println(String.valueOf(demo05()));
    }
    //首先不管有没有异常,finally都会执行
    //①没有异常执行 ,先执行try再执行finally,输出结果为1 3
    private static void demo01(){
        System.out.println("接下来是demo01");
        try{
            System.out.println("1");
        }catch(Exception e){
            System.out.println("2");
        }finally{
            System.out.println("3");
        }
    }
    //②在try 和catch 中都有return而finally中没有return的情况下时,没有异常的情况下先执行try和finally的语句再执行return语句
    //因此输出结果为 : try//1  
    public static int demo02(){
        System.out.println("接下来是demo02");
        try{
            System.out.println("try//1");
            return 1;
        }catch(Exception e){
            return 2;
        }finally{
            System.out.println("finally//3");
        }
    }
    //③finally是在return后面的表达式运算后执行的,
    public static int demo03(){
        System.out.println("接下来是demo03");
        int i=0;
        try{
            i =1;
            System.out.println("try//1");
            return i;
        }catch(Exception e){
            i =2;
            System.out.println("finally//3");
            return i;
        }finally{
            i =3;
            System.out.println("finally//3");
        }
    }
    //④finally中有return的时候,会首先先执行try,和finally中的语句(return除外,)之后再分别执行try中个finally中的return语句
    @SuppressWarnings("finally")
    public static int demo04(){
        System.out.println("接下来是demo04");
        int i=0;
        try{
            i =1;
            System.out.println("try//1");
            return i;
        }catch(Exception e){
            i =2;
            System.out.println("finally//3");
            return i;
        }finally{
            i =3;
            System.out.println("finally//3");
            return i;
        }
    }
    //05测试题目
    public static int demo05(){
        System.out.println("接下来是demo05");
         int x = 0;
         try {
          ++x;
          return x;
      } catch (Exception e) {
          x=2;
          return x;
      }
      finally{
         ++x;
         }       
    }
}

你可能感兴趣的:(JAVA,java)