我的代码存在问题。我在这里简化了它:
public class SuperDuper {
public static void main(String[] args) {
try{
method();
} catch(CustomException e) {
System.out.println("Caught!");
}
}
public static void method() throws Exception {
throw new CustomException();
}
}
我的自定义异常只是:
public class CustomException extends Exception {
public CustomException() {
super();
}
public CustomException(String text) {
super(text);
}
}
但是它在编译期间返回以下错误:
SuperDuper.java:6: error: unreported exception Exception; must be caught or declared to be thrown
method();
^
我做错了什么?如果我将catch更改为Exception则可以,但不会。
编辑:我看到这被报道为重复,但该网站建议的重复项没有处理此问题。
答案 0 :(得分:2)
您声明method() throws Exception
,但您正在捕捉CustomException
。将方法签名更改为throws CustomException
。否则你需要捕获Exception,而不是CustomException。
答案 1 :(得分:2)
method()
被声明为抛出Exception
,因此您需要抓住Exception
。您可能反而认为method()
看起来像
public static void method() throws CustomException {
throw new CustomException();
}