Sto implementando un'implementazione di raccolta personalizzata che può essere di sola lettura o non di sola lettura; vale a dire, tutti i metodi che modificano la raccolta chiamare una funzione che è l'equivalente morale di:Quando utilizzare InvalidOperationException o NotSupportedException?
private void ThrowIfReadOnly() {
if (this.isReadOnly)
throw new SomeException("Cannot modify a readonly collection.");
}
non sono sicuro che di NotSupportedException
o InvalidOperationException
dovrei usare in quel caso.
Chiamare un metodo su un oggetto eliminato dovrebbe gettare 'ObjectDisposedException' invece di' InvalidOperationException' anche se è un'operazione non valida. –
@ Martin: Oh, bello! Non sapevo nulla di "ObjectDisposedException".(E come 'ObjectDisposedException' è un sottotipo di 'InvalidOperationException', si lega bene ad essere un caso particolare di' InvalidOperationException') –
Che dire qualcosa come: bool SomeMethod (param) { if (param in some state A) restituisce un controllo specifico; if (param in qualche stato B) ritorno, un altro controllo specifico; lanciare la nuova NotSupportedException(); } Se qualcuno ha aggiunto un altro possibile stato che potrebbe essere raggiunto quando si chiama questo metodo, lo sviluppatore dovrebbe essere l'aggiunta di un terzo if. Quindi per me raggiungere l'ultima riga del metodo è un'eccezione non supportata. Cosa ne pensi? – Skychan