捕获自定义异常

时间:2015-03-19 20:36:15

标签: java exception exception-handling custom-exceptions

我的代码存在问题。我在这里简化了它:

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则可以,但不会。

编辑:我看到这被报道为重复,但该网站建议的重复项没有处理此问题。

2 个答案:

答案 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();
    }