test1() 方法有 throws DrunkException,但 test2() 不用,很迷。
在异常的第一节介绍里面有:异常分为非检查异常(RuntimeException)和检查异常。非检查异常是JVM自动抛出,自动捕获的。个人理解就是不需要throws声明的,由jvm自动接管,所以在main方法中不需要捕获也是可以的(已验证);当然也不用专门抛出,贴一个运行OK的版本。
加油,加油,加油!这个代码给的太简单化了有些东西已经写好了,就像这个si已经上一步new对象的时候出来的,你再用score肯定错误
用了 try catch 意味着方法体内的异常会被捕捉并进行一定的处理,所以就不用再声明throws了
因为他在test2()中解决了这个异常。。。不用抛出让上一级解决。test1();就是这样的,他发现了异常,却没有解决,而是用throws声明了有异常要发生,但是没解决,交给了test2()来解决。
查了一下:异常分两种,一种是可抓可不抓的,一种是必须抓的。可抓可不抓的异常就可以不用写throws,必须抓的异常那就必须要写throws了。
throw是抛出异常,将drunk异常抛出,然后在test2中用try-catch捕捉抛出的这个异常,之所以test2不用是因为要捕捉到test1抛出的异常,要像test1一样抛出的话就没办法进行异常处理,捕捉到才能进入异常处理程序
因为它有了try-catch块.emmm不知道说的对不对.我是这么理解的