Java异常之 finally语句

 1 public class Demo13{    
 2     
 3     /*
 4     
 5     如果我们在try或者catch语句块中抛出异常,finally语句是否会执行?
 6     
 7     */
 8     public static void main(String[] args) {
 9         try{
10             Integer.parseInt("abc");
11         }catch(Exception e){
12             System.out.println("catched");
13             //为了能追踪到完整的异常栈,在构造异常的时候,把原始的Exception实例传进去,新的Exception就可以持有原始Exception信息
14             throw new RuntimeException(e);
15         }finally{
16             System.out.println("finally");
17         }        
18     }
19 }

 

 

第一行打印了catched,说明进入了catch语句块。第二行打印了finally,说明执行了finally语句块。

因此,在catch中抛出异常,不会影响finally的执行。JVM会先执行finally,然后抛出异常。

posted @ 2020-12-28 14:24  dog_IT  阅读(116)  评论(0编辑  收藏  举报