Tracce
/
C#
C#
/
Programma
/
Eccezioni definite dall'utente
Ec

Eccezioni definite dall'utente in C#

1 esercizio

Informazioni su Eccezioni definite dall'utente

Un'eccezione definita dall'utente è una qualsiasi classe che definisci nel codice e che deriva da System.Exception. È soggetta a tutte le regole dell'ereditarietà delle classi, ma in più il compilatore ed il runtime del linguaggio trattano queste classi in modo speciale, permettendo che le loro istanze vengano lanciate e catturate al di fuori del normale flusso di controllo, come discusso nell'esercizio exceptions. Le eccezioni definite dall'utente si possono usare in ogni modo, esattamente come le eccezioni del runtime e della Microsoft Base Class Library.

Questo trattamento speciale si applica solo alle classi derivate da Exception. Non puoi lanciare istanze di nessun altro tipo.

Le eccezioni definite dall'utente sono spesso usate per trasportare informazioni aggiuntive, come un messaggio ed altri dati rilevanti da rendere disponibili alle routine che le catturano. Queste informazioni possono poi essere registrate nei log, comunicate all'utente o magari usate per ritentare un'operazione. System.Exception ha membri dati comodi e costruttori appropriati per contenere un messaggio e l'eccezione «interna».

Per convenzione, i nomi delle classi di eccezione terminano con «Exception», ad esempio MyTerribleException.

Sebbene usare le eccezioni definite dall'utente per avvolgere ed arricchire eccezioni di terze parti sia uno schema ricorrente, il consiglio generale è di non abusarne al di fuori di questo caso d'uso nel proprio codice. Questa pratica è considerata un anti-pattern. Questa opinione è stata messa in discussione: puoi vedere entrambe le posizioni in questo post su Stack Exchange.

Questo articolo è una buona introduzione alle eccezioni definite dall'utente.

Nell'ambito delle linee guida su come creare e lanciare eccezioni, il team .NET raccomanda che le eccezioni definite dall'utente abbiano una serie di costruttori di convenienza. Nella maggior parte dei casi, la combinazione illustrata di seguito è appropriata.

public class IncompleteExerciseException : System.Exception
{
    public IncompleteExerciseException() : base() { }
    public IncompleteExerciseException(string message) : base(message) { }
    public IncompleteExerciseException(string message, System.Exception inner) : base(message, inner) { }
}
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Eccezioni definite dall'utente