This rule applies whenever an `if` statement is followed by one or

more `else if` statements, the final `else if` shall 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();
    }

## See

- MISRA C:2004, 14.10
- MISRA C++:2008, 6-4-2
- MISRA C:2012, 15.7
- CERT, MSC01-C - Strive for logical completeness
- CERT, MSC01-CPP - Strive for logical completeness
- CERT, MSC64-Java - Strive for logical completeness