← back to index

S126 — "if ... else if" constructs should end with "else" clauses

Language: C#  |  Type: CODE_SMELL  |  Severity: Critical

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

Exceptions

None