我是Java的新手,试图理解Java中的异常。

class MyException extends Exception {

      void someMethod () {
            doStuff();
      }

      void doStuff() throws MyException {

         try {
             throw new MyException();
          }

          catch(MyException me) {
             throw me;
          }
       }
}


该程序给出错误:


java:3:未报告的异常MyException;必须被抓住或宣布被抛出

 doStuff();
         ^



try和catch块在doStuff()方法中编写。还有doStuff()方法“抛出” MyException,那么为什么还需要在MyException中抛出someMethod()

最佳答案

您确实确实捕获了MyException,但是重新抛出了它,因此需要捕获一个新的活动异常。

这称为检查异常。每次调用doStuff()方法时,都需要将其包装在try / catch中以获取MyException,或者可以声明您的方法也将抛出MyException。

这保证了至少在编码过程中会考虑已知的异常。

10-08 00:45