抛出异常先后问题

来源:1-7 Java 中的异常链

qq_顶着西瓜皮的籽_03776560

2016-08-04 11:49

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

写回答 关注

3回答

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

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

    春风十里不如... 回复qq_顶着西...

    initCause()这个方法就是对异常来进行包装的,为了出了问题的时候能够追根究底。

    2016-08-04 16:26:28

    共 2 条回复 >

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

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

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

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

    金乘三 回复qq_顶着西...

    我感觉是 的确是执行test1(),而test1()抛出的错误 被test2()中的try -catch捕获并且 被包装成了新的异常 所以就只抛出了 runtimeException 而至于后面又显示的 最初的异常DrunkException 是因为initCause(), 如果不是这样我觉得你就理解成 这是一种语法吧

    2016-08-08 12:16:59

    共 2 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409779 学习 · 4339 问题

查看课程

相似问题