33 lines
970 B
Plaintext
33 lines
970 B
Plaintext
This rule applies whenever an `+if+` statement is followed by one or more `+else if+` statements; the final `+else if+` should be followed by an `+else+` statement.
|
|
|
|
The requirement for a final `+else+` statement is defensive programming.
|
|
The `+else+` statement should either take appropriate action or contain a suitable comment as to why no action is taken. This is consistent with the requirement to have a final `+case _+` clause in a `+match+`.
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
if (x == 0) {
|
|
doSomething
|
|
} else if (x == 1) {
|
|
doSomethingElse
|
|
}
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
if (x == 0) {
|
|
doSomething
|
|
} else if (x == 1) {
|
|
doSomethingElse
|
|
} else {
|
|
throw new IllegalStateException
|
|
}
|
|
----
|
|
|
|
== Exceptions
|
|
|
|
When all branches of an `+if+`-`+else if+` end with `+return+`, `+break+` or `+throw+`, the code that comes after the `+if+` implicitly behaves as if it was in an `+else+` clause. This rule will therefore ignore that case.
|
|
|
|
include::../see.adoc[]
|