为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能处理这个异常?

为什么不能处理这个异常?

慕容3067478 2022-05-12 17:17:39
假设我有这个例外: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 块将变为死代码(即永远无法到达的代码),而编译器不会允许它。


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信