If a developer fails to add a break statement to the end of a switch-clause, then control flow "falls" into any following switch-clause. Whilst this is sometimes intentional, it is often an error. To ensure that such errors can be detected, the last statement in every switch-clause shall be a break statement, or if the switch-clause is a compound statement, then the last statement in the compound statement shall be a break statement. A special case exists if the switch-clause is empty, as this allows groups of clauses requiring identical statements to be created.
The following code snippet illustrates this rule:
switch (param) { case 0: // Compliant case 1: // Compliant break; case 2: // Compliant return; case 3: // Compliant throw new Error(); case 4: // Non-compliant doSomething(); default: // Non-compliant - default must also have "break" doSomethingElse(); }