A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王亚运 中级黑马   /  2012-11-15 23:58  /  1817 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王亚运 于 2012-11-16 09:16 编辑

关于异常抛出后执行顺序不解。。
这是day10练习4_16题。
原题是考察抛出异常后异常后面代码无法执行到,然后编译失败。
现在把无法执行到代码注释掉。
运行。
是先执行func()抛出的异常被catch()捕捉。
还是先执行fun()方法,被func()方法内的catch()捕捉?
先猜下运行结果吧。
知道的话,望指点。

运行结果:B D
  1. class Demo
  2. {        
  3.      public static void func()
  4.      {
  5.           try
  6.           {
  7.                throw  new Exception();
  8.                //System.out.println("A");
  9.           }
  10.          catch(Exception e)
  11.          {
  12.          System.out.println("B");//为什么是先运行这个捕捉?
  13.          }
  14.         }
  15.         public static void main(String[] args)
  16.      {
  17.          try
  18.          {
  19.               func();
  20.          }
  21.          catch(Exception e)
  22.         {
  23.                System.out.println("C");
  24.         }
  25.         System.out.println("D");
  26.      }
  27. }
复制代码
谢谢观看.....

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
fun()方法中对于异常的处理是try catch  因此相当于方法内部解决异常,在调用方法的时候是不用再次try catch的
程序的流程是 调用方法fun(),抛出了异常,然后就到了catch捕捉了 ,对于这个异常的处理是打印出了B,到这里fun()方法结束
fun()方法结束后并没有异常被抛出,因此不会执行打印c,接着往下走打印D

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.上面的运行结果应该是BD。
2.在程序运行时会先执行主函数,当主函数执行到func()时,就会去调用func方法,
  而在func方法的内部虽然出现异常,但却又在其内部被捕捉到了,所以会输出B。
3.因为func()内部已经将异常处理过了,所以在其方法上就不需要再进行异常声明了。
4.当func()方法执行完后,继续执行主函数,因为没有进行异常声明,所以主函数就没有异常发生,
  就不会去执行catch语句。直接执行下面的语句,输出D。
5.以上为个人理解,希望能帮到楼主。

点评

谢谢。。。赶脚该给你们加分。。。  发表于 2012-11-16 09:15

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 iacky2 于 2012-11-16 09:14 编辑

运行结果:
B
D

运行func()的时候,异常被func()内try catch掉,输出B,而对于fuunc()方法在main程序中并未抛出异常,所以不执行 main中的catch语句块,然后继续执行主程序输出D

点评

谢谢。。。赶脚该给你们加分。。。  发表于 2012-11-16 09:15

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
张利 发表于 2012-11-16 00:52
fun()方法中对于异常的处理是try catch  因此相当于方法内部解决异常,在调用方法的时候是不用再次try catc ...

谢谢。。。赶脚该给你们加分。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马