try catch finally

1.try...catch...finally全部执行

public class TestJava {

    @Test
    public void test1(){
        int value1 = 0;
        int value2 = 100;
        System.out.println(test1(value1, value2));
    }
    public static String test1(int value1,int value2){
        try {
            System.out.println("try执行...");
            int res = value2/value1;
            return "返回结果...try";
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("catch执行...");
            return "返回结果...catch";
        }finally {
            System.out.println("finally执行...");
            return "返回结果...finally";
        }
    }
}

 

try执行...
java.lang.ArithmeticException: / by zero
	at com.anjunshuang.demo.TestJava.test1(TestJava.java:20)
	at com.anjunshuang.demo.TestJava.test1(TestJava.java:15)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
catch执行...
finally执行...
返回结果...finally

Process finished with exit code 0

当程序有异常

(1):当try-catch-finally全部执行,并且有return语句,结果已finally中的return为准。

(2):try中异常语句之后的代码不会运行,catch和finally中的代码都会运行的到。

当程序没有异常

(1):当程序正常执行,catch语句肯定不会执行的到。

(2):当finally中没有return:先执行try中代码,然后执行finally中代码,回来在执行try中的return。

(3):当finally中有return:先执行try中代码,然后执行finally中代码,遇到return就直接return了。

再次提炼

return的执行顺序就是:catch--->fianlly。所以结果已finally为准。

只有catch和finally中都没有return,try中的return才会被执行到。

无论如何,finally中的语句一定会被执行到。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值