java学习--try catch finally

来源:互联网 发布:java基础学完学什么 编辑:程序博客网 时间:2024/05/22 12:25

今天看到一段视频讲try catch finally,然后觉得不错,就把其中的内容再写一遍

这里主要讲一道题:

try{}里有一个return语句,那么紧跟在try后的finally{}里的代码会不会被执行,什么时候被执行

a. 不会执行

b. 会执行,在return前执行

c. 会执行,在return后执行

d. 会执行,可能在return前执行,也可能在return后执行


下面是一段示例代码:


package exercise;public class trycatch {     public void demo01() {     try{     System.out.println("try.......");     //Integer.parseInt("java");     return;     }catch(Exception e){     System.out.println("catch........");     e.printStackTrace();     }finally{     System.out.println("finally........");     }     }          public static void main(String[] args) {     trycatch try1 = new trycatch();     try1.demo01();     }}

执行结果:

try.......
finally........

这表明,finally{}是在return之前执行的,所以选B

若是把注释掉的那行代码的注释去掉,执行结果:

try.......
catch........
java.lang.NumberFormatException: For input string: "java"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at exercise.trycatch.demo01(trycatch.java:8)
at exercise.trycatch.main(trycatch.java:20)
finally........

这里处理异常以后,就不会再执行return了


原理(原因):

finally{}中一般用来释放资源(例如:connection close,流的关闭等),所以应先释放资源再return;

无论是否有异常,都会执行finally中的语句


其他:

健壮性的一个保证(JDBC:捕获sql语句异常)


0 0