为什么java.lang.Exception不允许在构造函数外部设置消息?

时间:2016-08-30 15:23:59

标签: java exception

为什么java.lang.Exception没有为邮件提供设置器,只允许通过构造函数设置它(例如super(_msg))?

例如:

public BadParameterException(QueryParameter _param, String _valStr) {

    this.param = _param;
    this.valAsStr = _valStr;
}

public BadParameterException(QueryParameter _param, String _valStr, String _msg) {

    this(_param, _valStr);
    /* This is not possible */ super.setMessage(_msg);
}

相反,我必须这样做:

public BadParameterException(QueryParameter _param, String _valStr, String _msg) {

    super(_msg);
    this.param = _param;
    this.valAsStr = _valStr;
}

1 个答案:

答案 0 :(得分:8)

因为Exception是情境的快照。它不应该改变它的状态。

由于消息只能通过构造函数设置,因此它基本上是final,之后无法更改。这是它的设计方式。