为什么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;
}
答案 0 :(得分:8)
因为Exception是情境的快照。它不应该改变它的状态。
由于消息只能通过构造函数设置,因此它基本上是final
,之后无法更改。这是它的设计方式。