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: * Will be fully defined at the same time the ``++Exception++`` is instantiated. * Won't be updated or corrupted by a questionable error handler. This will enable developers to quickly understand what went wrong. == Noncompliant Code Example [source,java] ---- 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 [source,java] ---- 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; } } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] ''' == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]