Why is this an issue?

Exceptions are meant to represent the application’s state at the point at which an error occurred.

Making all fields in an Exception class final ensures that this state:

This will enable developers to quickly understand what went wrong.

Noncompliant code example

public class MyException extends Exception {

  private int status;                               // Noncompliant

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

  public int getStatus() {
    return status;
  }

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

}

Compliant solution

public class MyException extends Exception {

  private final int status;

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

  public int getStatus() {
    return status;
  }

}