2021-04-28 16:49:39 +02:00
|
|
|
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
|
|
|
|
|
|
|
|
----
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
----
|