课程
/后端开发
/Java
/Java入门第三季
test1() 方法有 throws DrunkException,但 test2() 不用,很迷。
2018-08-13
源自:Java入门第三季 1-7
正在回答
在异常的第一节介绍里面有:异常分为非检查异常(RuntimeException)和检查异常。非检查异常是JVM自动抛出,自动捕获的。个人理解就是不需要throws声明的,由jvm自动接管,所以在main方法中不需要捕获也是可以的(已验证);当然也不用专门抛出,贴一个运行OK的版本。
阿Dine
呵呵__ 提问者
慕无忌4011151
加油,加油,加油!这个代码给的太简单化了有些东西已经写好了,就像这个si已经上一步new对象的时候出来的,你再用score肯定错误
用了 try catch 意味着方法体内的异常会被捕捉并进行一定的处理,所以就不用再声明throws了
因为他在test2()中解决了这个异常。。。不用抛出让上一级解决。test1();就是这样的,他发现了异常,却没有解决,而是用throws声明了有异常要发生,但是没解决,交给了test2()来解决。
查了一下:异常分两种,一种是可抓可不抓的,一种是必须抓的。可抓可不抓的异常就可以不用写throws,必须抓的异常那就必须要写throws了。
throw是抛出异常,将drunk异常抛出,然后在test2中用try-catch捕捉抛出的这个异常,之所以test2不用是因为要捕捉到test1抛出的异常,要像test1一样抛出的话就没办法进行异常处理,捕捉到才能进入异常处理程序
因为它有了try-catch块.emmm不知道说的对不对.我是这么理解的
举报
Java中你必须懂得常用技能,不容错过的精彩,快来加入吧
4 回答test2中throw了一个RunTimeException异常,为什么方法名后面没有throws声明
3 回答请问test2() throw 的RuntimeException 为什么不需要test2() throws Exception 声明抛出异常?
5 回答方法内的异常被throw,方法还需要throws吗?
10 回答test2方法没有声明异常抛出,为什么编译器还能通过?
4 回答为什么test2()不需要 throws ?