try、catch、finally、return的执行顺序

1. 不管有没有异常,finally里面的语句都会执行

2. 当try和catch中有返回语句时,finally里面的语句还是会执行

3. 如果finally里面没有return语句,try和catch里面有return语句,则最终的返回值在执行finally之前就已经确定了

4. 如果finally里面有return语句,则最终的返回值在执行finally之后确定

    //顺序执行,返回15
    public static int val1() {
        int num = 5;
        try {
            num = num / 0;
        } catch (Exception e) {
            num = 10;
        } finally {
            num = 15;
        }
        return num;
    }
    //执行catch中的return语句但是不返回,但是保留了返回值10,
    //再执行finally语句,最后返回catch中的值,返回值10
    public static int val2() {
        int num = 5;
        try {
            num = num / 0;
        } catch (Exception e) {
            num = 10;
            return num;
        } finally {
            num = 15;
        }
        return num;
    }
  //执行catch中的return语句但是不返回,但是保留了返回值10,
    //再执行finally语句,最后返回catch中的值,返回值10
    public static int val2() {
        int num = 5;
        try {
            num = num / 0;
        } catch (Exception e) {
            num = 10;
            return num;
        } finally {
            num = 15;
        }
        return num;
    }
    //执行try中的return语句但是不返回,但是保留了返回值1,
    //再执行finally语句,最后返回catch中的值,返回值1
    public static int val4() {
        int num = 5;
        try {
            num = num / 5;
            return num;
        } catch (Exception e) {
            num = 10;
        } finally {
            num = 15;
        }
        return num;
    }
    //执行try中的return语句但是不返回,但是保留了返回值1,
    //再执行finally语句,最后返回catch中的值,返回值1
    public static int val4() {
        int num = 5;
        try {
            num = num / 5;
            return num;
        } catch (Exception e) {
            num = 10;
        } finally {
            num = 15;
        }
        return num;
    }
posted @ 2022-04-01 11:36  shaun23  阅读(150)  评论(0)    收藏  举报