finally在什么时候执行


1、finally在try ...catch 执行完毕后一定会执行的
2、Exception可以多次捕抓,但是只捕抓一次,为匹配的最子类的那个
实例如下:
finally什么时候执行

public class FinallyTest { public void test(){ boolean b = false; try{ System.out.println("in test"); if(b) throw new IOException(); }catch(IOException e){ System.out.println("in IOException"); }catch(Exception e){ System.out.println("in Exception"); }finally{ System.out.println("in finally"); } } public static void main(String[] args){ FinallyTest f = new FinallyTest(); f.test(); } }

第一种情况:boolean b = false;执行结果为

in test in finally

第二种情况:boolean b = true;执行结果为

in test in IOException in finally

捕抓哪个Exception
第一种情况:抛出IOException的时候

import java.io.IOException; public class FinallyTest { public void test(){ boolean b = true; try{ System.out.println("in test"); if(b) throw new IOException(); }catch(IOException e){ System.out.println("in IOException"); }catch(Exception e){ System.out.println("in Exception"); }finally{ System.out.println("in finally"); } } public static void main(String[] args){ FinallyTest f = new FinallyTest(); f.test(); } }

执行结果为:

in test in IOException in finally

第二种情况:当抛出Exception时,其结果为

in test in Exception in finally

执行的是父类异常中的语句,即被最匹配的Exception异常捕获

你可能感兴趣的:(finally在什么时候执行)