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:
Exception
is instantiated. This will enable developers to quickly understand what went wrong.
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; } }
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; } }