将异常消息传递给父类,而不构造带有throw new exception()的消息;

时间:2016-06-15 15:39:55

标签: java exception inheritance constructor super

我有这段代码:

public class ExceptionFather extends Exception {}

public class ExceptionSon extends ExceptionFather {
    String someMessage;
    public ExceptionSon () {
        super(someMessage);
    }
}

我的目标是子异常将有自己的固定消息将自动传递,每次抛出它时我都不必在构造函数中写入消息。

问题是这给了我一个语法错误,说我必须有一个构造函数,将消息作为参数。

1 个答案:

答案 0 :(得分:2)

您必须定义在String类中使用ExceptionFather参数的构造函数:

class ExceptionFather extends Exception {
    public ExceptionFather(String message) {
        super(message);
    }
}

之后,您将能够在子类super(yourString)中编写ExceptionSonyourString不能是子实例变量,因为在调用超类型构造函数之前无法访问它。但在这种情况下,您可以使用静态(类)变量或String文字:

class ExceptionSon extends ExceptionFather {
    private static String message = "message";
    public ExceptionSon() {
        super(message); // or just "message"
    }
}