有这样一段代码 :

public class EmbededFinally {

     public static void main(String args[]){

          int result;

          try {

               System.out.println("in Level 1");

 

               try {

                    System.out.println("in Level 2");

  // result=100/0;  //Level 2

                    try {

                         System.out.println("in Level 3");

                            result=100/0;  //Level 3

                    }

                    catch (Exception e) {

                         System.out.println("Level 3:" + e.getClass().toString());

                    }

                                    finally {

                         System.out.println("In Level 3 finally");

                    }

                                   // result=100/0;  //Level 2

                }

               catch (Exception e) {

                    System.out.println("Level 2:" + e.getClass().toString());

               }

    finally {

                    System.out.println("In Level 2 finally");

               }

                // result = 100 / 0;  //level 1

          }

          catch (Exception e) {

               System.out.println("Level 1:" + e.getClass().toString());

          }

          finally {

               System.out.println("In Level 1 finally");

          }

     }

当我去掉level2中level3前面的注释时,level3的catch不再执行;

当我去掉level2中level3后面的注释时,level3的catch执行;

所以得到,当try中发现异常并抛出异常之后则不向下执行,直接转到catch接收异常,最后执行同层次finally。

}