## Why is this an issue?

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 `default` clause in a `switch` statement.

### 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();
    }

## Resources

- CERT, MSC01-C. - Strive for logical completeness
- CERT, MSC57-J. - Strive for logical completeness