TryCatchFinally+return 总结

finally{}中有return:如果try正常/或异常,则执行finally{}中的return


如果finally{}中没有return, 如果try{}正常,执行try{}return语句,
如果异常执行catch{}中return语句,但是此事return语句返回在finally{}语句之后


finally{}中有错误,应该是直接退出

—上代码!!

package others;

/**
 * finally{}中有return:如果try正常/或异常,则执行finally{}中的return
 * 
 * 
 * 如果finally{}中没有return, 如果try{}正常,执行try{}return语句,
 * 如果异常执行catch{}中return语句,但是此事return语句返回在finally{}语句之后
 * 
 * 
 * finally{}中有错误,应该是直接退出
 * 
 * @author sshunsun
 *
 */
public class TryCatchFinally {
    public static void main(String[] args) {
        System.out.println(Test1(1));
        System.out.println("------------------");
        System.out.println(Test1(2));
        System.out.println("~~~~~~~~~~~~~~~");
        System.out.println(Test2(1));
        System.out.println("------------------");
        System.out.println(Test2(2));
        System.out.println("~~~~~~~~~~~~~~~");
        System.out.println(Test3(1));
    }

    /**
     * @param num
     * @return finally{}中有return:如果try正常/或异常,则执行finally{}中的return
     * 
     */
    public static String Test1(int num) {
        System.out.println("Test1----" + num);
        try {
            System.out.println("start Try");
            if (num == 2) {
                throw new Exception(num + "");
            }
            System.out.println("end Try");
            return "return in try";
        } catch (Exception e) {
            System.out.println("start Catch");

            System.out.println("end Catch");
            return "return in catch";
        } finally {

            System.out.println("start Finally");

            System.out.println("end Finally");
            return "return in finally";
        }
    }





    /**
     * @param num
     * @return 如果finally{}中没有return, 如果try{}正常,执行try{}return语句,
     *         如果异常执行catch{}中return语句,但是此事return语句返回在finally{}语句之后
     *         finally对最终结果不会有影响!!
     */
    public static String Test2(int num) {
        int i = num;
        System.out.println("Test2----" + num);
        try {
            System.out.println("start Try");
            if (num == 2) {
                throw new Exception(num + "");
            }
            System.out.println("end Try");
            return "return in try  num:" + i;
        } catch (Exception e) {
            System.out.println("start Catch");

            System.out.println("end Catch");
            return "return in catch  num:" + i;
        } finally {
            System.out.println("start Finally");
            i = 0; // finally对最终结果不会有影响
            System.out.println("end Finally");
        }
    }




    /**
     * @param num
     * @return
     * 
     * 
     *         finally{}中有错误,应该是直接退出
     */
    public static String Test3(int num) {
        int i = num;
        System.out.println("Test3----" + num);
        try {
            System.out.println("start Try");
            if (num == 2) {
                throw new Exception(num + "");
            }
            System.out.println("end Try");
            return "return in try  num:" + i;
        } catch (Exception e) {
            System.out.println("start Catch");

            System.out.println("end Catch");
            return "return in catch  num:" + i;
        } finally {
            System.out.println("start Finally");
            int t = 5 / 0;
            System.out.println("end Finally");

            return "return in finally";
        }
    }

}

运行结果:

Test1----1
start Try
end Try
start Finally
end Finally
return in finally
------------------
Test1----2
start Try
start Catch
end Catch
start Finally
end Finally
return in finally
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test2----1
start Try
end Try
start Finally
end Finally
return in try  num:1
------------------
Test2----2
start Try
start Catch
end Catch
start Finally
end Finally
return in catch  num:2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test3----1
start Try
end Try
start Finally
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at others.TryCatchFinally.Test3(TryCatchFinally.java:99)
    at others.TryCatchFinally.main(TryCatchFinally.java:23)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值