2013-05-08 14 views
9

Conosco i riepiloghi e le descrizioni.InvalidOperationException vs. ArgumentException

Ma cosa succede se ARGUMENT si trova in uno STATO NON VALIDO?

Penso che ArgumentException sia più appropriato perché la documentazione InvalidOperationException dice che l'oggetto stesso su quale sia il metodo chiamato deve trovarsi in uno stato non valido, giusto?

+0

Troppo localizzato ... Gli utenti reali non se ne preoccupano ... È importante quello che ne ricavate e quindi è puro gusto ... –

risposta

11

La documentazione dice abbastanza chiaramente:

InvalidOperationException viene utilizzato nei casi in cui il mancato invocare un metodo è causata da motivi altro di argomenti non validi.
...
Se il guasto chiamata di metodo è dovuto alla non validi argomenti, quindi ArgumentException o una delle sue classi derivate, ArgumentNullException o ArgumentOutOfRangeException, dovrebbero essere gettati invece.

Il metodo prevede che gli argomenti siano in un determinato stato, che potrebbero includere qualsiasi cosa, incluso essere in uno "stato valido" come definito dal tipo di argomento stesso.
Penso che il principale punto di differenza sia la fonte del problema:
È l'argomento o l'oggetto su cui si chiama il metodo?

0

Probabilmente vi siete persi con la mancanza di esempi.

ArgumentException: L'esempio sarebbe una funzione che termina in un'eccezione a causa di un argomento non valido passato a tale funzione. Questo tipo di eccezione viene gestito correttamente utilizzando qualsiasi meccanismo difensivo che sia l'ideale in determinati casi.

InvalidOperationException: Esempio potrebbe modificare una raccolta mentre un enumeratore è in vigore. Ciò causa un'eccezione di operazione non valida.

Problemi correlati