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.
In Scala, this rule also applies when an if statement without an else clause appears on the right-hand side of an
assignment. Since Scala treats if as an expression that returns a value, omitting the else clause results in the assignment
receiving Unit (represented as ()) when the condition is false, which is typically unintended and can lead to type errors or
unexpected behavior.
if (x == 0) {
doSomething
} else if (x == 1) {
doSomethingElse
}
val result = if (x == 0) {
"zero"
}
if (x == 0) {
doSomething
} else if (x == 1) {
doSomethingElse
} else {
throw new IllegalStateException
}
val result = if (x == 0) {
"zero"
} else {
"not zero"
}
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.