我有一个类,它有一个方法可以抛出一些异常并将它们捕获到自身内部,但是当我在我的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类中捕获异常?
答案 0 :(得分:1)
因为你正在捕获InvalidNumberException
内的method
,所以不需要throws
子句,但是,它的存在要求对它的调用必须处理异常。因此,编译器期望您在main
中处理异常。
要解决此问题,只需删除修改throws
的{{1}}子句,因为您已经在处理内部异常。