假设我有这个例外:class NoMoreCarrotsException extends Exception {}这是一个已检查的异常,因此必须对其进行处理或声明。假设我有这个方法:private static void eatCarrot(){}public void fails(){ try{ eatCarrot(); }catch(NoMoreCarrotsException e){}}和这个:public void works() throws NoMoreCarrotsException { eatCarrot(); }为什么第二个有效但第一个无效?该eatCarrot方法不会抛出异常,那么为什么我们可以声明/抛出它?
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
您可以声明您的方法(works()
在这种情况下)throws
是一个异常,即使它没有抛出它。
原因是这将允许覆盖您的方法的子类抛出该异常(或该异常的任何子类)。
另一方面,在 try-catch 块中,如果您尝试捕获 try 块无法抛出的异常,则您的 catch 块将变为死代码(即永远无法到达的代码),而编译器不会允许它。
添加回答
举报
0/150
提交
取消