Was ist die richtige Ausnahme für nicht behandelte Enum-Werte?

Dies ist ein weiterer Fall von mirandere Frage zu unbehandelten Fällen mit Aufzählungen was mir empfohlen wurde als separate frage zu stellen.

Sagen wir habenSomeEnum und lassen Sie eine switch-Anweisung so behandeln:

enum SomeEnum
{
  One,
  Two
}

void someFunc()
{
  SomeEnum value = someOtherFunc();
  switch(value)
  {
     case One:
       ... break;
     case Two:
       ... break;
     default:
         throw new ??????Exception("Unhandled value: " + value.ToString());    
  }
}

Wie Sie sehen, behandeln wir alle möglichen Aufzählungswerte, behalten jedoch den Standardwert bei, der eine Ausnahme auslöst, falls ein neues Mitglied hinzugefügt wird, und möchten sicherstellen, dass wir uns der fehlenden Behandlung bewusst sind.

Meine Frage ist: Was ist die richtige Ausnahme in solchen Situationen, in denen Sie mitteilen möchten, dass der angegebene Codepfad nicht verarbeitet / implementiert wird oder nie besucht werden sollte? Früher haben wir verwendetNotImplementedException aber es scheint nicht die richtige Passform zu sein. Unser nächster Kandidat istInvalidOperationException aber der Begriff klingt nicht richtig. Was ist der richtige und warum?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage