问答详情
源自:1-7 Java 中的异常链

抛出异常先后问题

用main方法执行test2()时,test2()先执行test1(),不是应该先抛出DrunkException,再捕捉test2()的异常吗?

提问者:qq_顶着西瓜皮的籽_03776560 2016-08-04 11:49

个回答

  • 春风十里不如你3
    2016-08-04 13:13:00
    已采纳

    确实是执行了,但这个异常被包装了,main方法执行test2()就是在找test2()的异常,test2()再找test1()的异常。用慕课中的例子解释就是醉酒驾驶,车祸和人员伤亡,导致人员伤亡的是车祸,所以先找到车祸,再去找醉酒驾驶。抛出异常应该找他的直接原因。

  • 慕容6636443
    2016-09-01 10:09:15

    test2()会抛出异常,那为什么不声明成public void test2() throw Exception呢

  • 春风十里不如你3
    2016-08-04 12:33:30

    test2()捕获test1()异常后,将其包装成了另一个异常,所以用main方法执行test2()后,应抛出包装后的异常。