异常是为了展示在发生错误时应用到的状态。

把所有字段都设置为final,保证这个状态:

这可以让开发者很快了解哪里出了问题。

如下代码:

public class MyException extends Exception {

  private int status;                               // Non-Compliant

  public MyException(String message) {
    super(message);
  }

  public int getStatus() {
    return status;
  }

  public void setStatus(int status) {
    this.status = status;
  }

}

应该重构为:

public class MyException extends Exception {

  private final int status;                         // Compliant

  public MyException(String message, int status) {
    super(message);
    this.status = status;
  }

  public int getStatus() {
    return status;
  }

}