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中的语句一定会被执行到。
上一篇: python_时间处理