欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

try catch finally

程序员文章站 2022-04-06 15:54:49
...

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中的语句一定会被执行到。