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

这节中 chainTest 类的 test2() 方法 throw 了一个 RuntimeException 异常,为什么它不用 throws 声明?

test1() 方法有 throws DrunkException,但 test2() 不用,很迷。

提问者:呵呵__ 2018-08-13 15:20

个回答

  • 伊万诺维奇
    2018-08-22 10:26:45
    已采纳

    在异常的第一节介绍里面有:异常分为非检查异常(RuntimeException)和检查异常。非检查异常是JVM自动抛出,自动捕获的。个人理解就是不需要throws声明的,由jvm自动接管,所以在main方法中不需要捕获也是可以的(已验证);当然也不用专门抛出,贴一个运行OK的版本。

    https://img2.mukewang.com/5b7cc9d700018a5a10570889.jpg

  • 慕移动9181930
    2022-03-24 11:45:44

    加油,加油,加油!西sinewscore

  • 饼神
    2019-01-13 23:09:17

    用了 try catch 意味着方法体内的异常会被捕捉并进行一定的处理,所以就不用再声明throws了

  • 暖_28
    2018-08-20 15:00:45

    因为他在test2()中解决了这个异常。。。不用抛出让上一级解决。test1();就是这样的,他发现了异常,却没有解决,而是用throws声明了有异常要发生,但是没解决,交给了test2()来解决。

  • 呵呵__
    2018-08-13 21:07:47

    查了一下:异常分两种,一种是可抓可不抓的,一种是必须抓的。可抓可不抓的异常就可以不用写throws,必须抓的异常那就必须要写throws了。

  • qq_残梦g_03767056
    2018-08-13 18:09:53

    throw是抛出异常,将drunk异常抛出,然后在test2中用try-catch捕捉抛出的这个异常,之所以test2不用是因为要捕捉到test1抛出的异常,要像test1一样抛出的话就没办法进行异常处理,捕捉到才能进入异常处理程序


  • 阿楠呐
    2018-08-13 18:01:58

    因为它有了try-catch块.emmm不知道说的对不对.我是这么理解的