== Why is this an issue? include::../description.adoc[] === Noncompliant code example [source,java] ---- switch (param) { //missing default clause case 0: doSomething(); break; case 1: doSomethingElse(); break; } switch (param) { default: // default clause should be the last one error(); break; case 0: doSomething(); break; case 1: doSomethingElse(); break; } ---- === Compliant solution [source,java] ---- switch (param) { case 0: doSomething(); break; case 1: doSomethingElse(); break; default: error(); break; } ---- === Exceptions If the ``++switch++`` parameter is an ``++Enum++`` and if all the constants of this enum are used in the ``++case++`` statements, then no ``++default++`` clause is expected. Example: [source,java] ---- public enum Day { SUNDAY, MONDAY } ... switch(day) { case SUNDAY: doSomething(); break; case MONDAY: doSomethingElse(); break; } ---- == Resources * CWE - https://cwe.mitre.org/data/definitions/478[CWE-478 - Missing Default Case in Switch Statement] * https://wiki.sei.cmu.edu/confluence/x/RtYxBQ[CERT, MSC01-C.] - Strive for logical completeness ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]