各位大虾:
  try
  {
     try
     {
       ...//code2
     }catch(Exception e)
     {
     ...
      }finally
      {
       System.out.println("error 2");
      }
 
  }catch(Exception e)
  {
    ...
  }finally
  {
    System.out.println("error 1");
  }  这是个简单的嵌套,我想知道:如果code2部分代码出现异常,控制台肯定能打印 error 2,但外层的finally部分代码会执行吗?此处会打印error 1吗?
谢谢

解决方案 »

  1.   

    finally当然会执行,但是外面的catch是不会进去的
      

  2.   

    to li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起):
      也就是说会打印出 error 1?
      

  3.   

    如果code2不throw new Exception()的话,或者没有运行时异常,外层try catch不会捕捉,也就不会打印出 error 1
      

  4.   

    外层finally当然会执行,因为里面的try有问题,那么外面的try肯定会报有问题,如果里面的catch没捉到,外面的catch会再捕捉,不管怎样外层finally在上述原因下会执行
      

  5.   

    程序中 遇到 finally 就必须执行 不管他在什么位置
      

  6.   

    谢谢各位:
      看来 grant999(民) 的答案和别人的都不一样
      

  7.   

    异常捕获嵌套,
    (1)如果内层发生异常,那么将由内层的catch进行捕获, 此时内层的catch和内层的finally和     外层的finally都会执行,而外层的catch则不会执行。而如果内层不能捕获,则内层的     finally还是会执行而且外层的catch和finally都会执行。(2)如果外层发生异常,则外层的catch和finally都会执行。