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

假设我有这个例外:


class NoMoreCarrotsException extends Exception {}

这是一个已检查的异常,因此必须对其进行处理或声明。


假设我有这个方法:


private static void eatCarrot(){}

public void fails(){

   try{ 

      eatCarrot(); 

   }catch(NoMoreCarrotsException e){}

}

和这个:


public void works() throws NoMoreCarrotsException { 

    eatCarrot(); 

}

为什么第二个有效但第一个无效?该eatCarrot方法不会抛出异常,那么为什么我们可以声明/抛出它?


慕容3067478
浏览 93回答 1
1回答

largeQ

您可以声明您的方法(works()在这种情况下)throws是一个异常,即使它没有抛出它。原因是这将允许覆盖您的方法的子类抛出该异常(或该异常的任何子类)。另一方面,在 try-catch 块中,如果您尝试捕获 try 块无法抛出的异常,则您的 catch 块将变为死代码(即永远无法到达的代码),而编译器不会允许它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java