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
,然后抛出异常。