Quale eccezione dovrei usare quando il programma raggiunge uno stato logico che "so" non accadrà, e se lo fa, qualcosa è terribilmente male.Quale eccezione devo lanciare per segnalare un errore interno nel mio programma?
Ad esempio:
int SomeFunction(int arg) {
SomeEnum x = Whatever(arg, somePrivateMember);
switch (x) {
case SomeEnum.Value1:
return SomeFunction1();
case SomeEnum.Value1:
return SomeFunction2();
default:
throw new WhatTypeToThrow();
}
}
Chiaramente, ArgumentException è un a lungo girato qui in quanto il valore non valido per x potrebbe provenire da un bug in qualunque(), o una combinazione non valida di argomenti e/o lo stato attuale dell'istanza.
Sto cercando qualcosa come InvalidProgramStateException, InternalErrorException o simile.
Naturalmente potrei definire il mio, ma mi chiedo se ci sia un'eccezione adeguata nel framework.
Modifica: Rimosso il codice di esempio semplice per ridurre la quantità di risposte ArgumentException.
Perché non creare la propria eccezione utilizzando uno dei nomi che hai già suggerito? O che ne dici di un "ShouldNotHappenException"? ;-) –
@ 0xA3 che non è considerata una best practice –
@erik: non si dispone di un errore interno qui. Hai un errore nell'argomento passato al tuo metodo. Questo può essere un errore interno in senso globale, ma quello che hai a livello locale è un 'ArgumentOutOfRangeException', come dice "chibacity" sotto. –