Inspectopedia Help

Fallthrough in 'switch' statement

Reports 'fall-through' in a switch statement.

Fall-through occurs when a series of executable statements after a case label is not guaranteed to transfer control before the next case label. For example, this can happen if the branch is missing a break statement. In that case, control falls through to the statements after that switch label, even though the switch expression is not equal to the value of the fallen-through label. While occasionally intended, this construction is confusing and is often the result of a typo.

This inspection ignores any fall-through commented with a text matching the regex pattern (?i)falls?\s*thro?u.

There is a fix that adds a break to the branch that can fall through to the next branch.

Example:

switch(x) { case (4): if (condition) { System.out.println("3"); // no break here } else { break; } case (6): System.out.println("4"); }

After the quick-fix is applied:

switch(x) { case (4): if (condition) { System.out.println("3"); } else { break; } break; case (6): System.out.println("4"); }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023