public void test2() //throws RuntimeException 为什么这个地方不需要 throws ? { try { test1(); } catch (DrunkException e) { System.out.println("test2 try catch(DrunkException)"); RuntimeException newExc = new RuntimeException(e); // newExc.initCause(e); throw newExc; }
运行时异常可以自由选择是否catch,所以不必声明
因为这是个运行时异常,不需要throws
可以理解成 throws是把异常抛出给上一级去处理
try catch就是直接捕获异常自己处理掉了,所以不用再抛出
已经使用try{}catch{}块儿了就不用再使用throws抛出异常了