== Why is this an issue? The requirement for a final ``++default++`` clause is defensive programming. The clause should either take appropriate action, or contain a suitable comment as to why no action is taken. Even when the ``++switch++`` covers all current values of an ``++enum++``, a ``++default++`` case should still be used because there is no guarantee that the ``++enum++`` won't be extended. === Noncompliant code example [source,csharp] ---- int foo = 42; switch (foo) // Noncompliant { case 0: Console.WriteLine("foo = 0"); break; case 42: Console.WriteLine("foo = 42"); break; } ---- === Compliant solution [source,csharp] ---- int foo = 42; switch (foo) // Compliant { case 0: Console.WriteLine("foo = 0"); break; case 42: Console.WriteLine("foo = 42"); break; default: throw new InvalidOperationException("Unexpected value foo = " + foo); } ---- include::../see.adoc[] 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[]