如何在抛出它们的方法(JAVA)中捕获异常?

时间:2016-02-18 20:45:47

标签: class methods exception-handling compilation throwable

我有一个类,它有一个方法可以抛出一些异常并将它们捕获到自身内部,但是当我在我的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类中捕获异常?

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,只需删除修改throws的{​​{1}}子句,因为您已经在处理内部异常。