0

我有一个类,它的方法抛出一些异常并在其内部捕获它们,但是当我在我的 Main 类中调用它时,它们似乎没有被捕获。

关于我的问题的一个例子:

public class Test {
 public static void method (int number) throws InvalidNumberException {
      try {
           if (number == 5) {
                throw new InvalidNumberException("Invalid number");
           }
      } catch (InvalidNumberException inv) {
           System.out.println(inv);
      }
 }
}

public class InvalidNumberException extends Exception {
 public InvalidNumberException (String s) {
      super(s);
 }
}



public class Main {
  public static void main(String args[]) {
       Test.method(5);
 }
}

当我尝试编译最后一个时,我收到此错误:

Main.java:3:错误:未报告的异常 InvalidNumberException;必须被捕获或声明被抛出 Test.method(5);

有没有办法在不捕获 Main 类中的异常的情况下修复它?

4

1 回答 1

1

因为您正在捕获InvalidNumberException内部method,所以不需要throws子句,但是,它的存在要求对它的调用必须处理异常。因此,编译器希望您处理main.

要解决这个问题,只需删除throws子句 modifying method,因为您已经在内部处理异常。

于 2016-02-19T00:33:11.817 回答