Eccezioni personalizzate
Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 29 di 66.
Le eccezioni personalizzate ti consentono di creare tipi di eccezione specifici per gli scenari di errore unici della tua applicazione.
Per creare un'eccezione personalizzata, definisci una classe che eredita da Exception. L'ereditarietà significa che la nuova classe acquisisce automaticamente tutti i comportamenti della classe genitore, in questo caso Exception, permettendoti al contempo di aggiungere o personalizzare funzionalità. La sintassi class MyException : Exception significa MyException estende Exception.
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}: Exception: eredita dalla classe integrata Exception.: base(...): chiama il costruttore della classe genitore Exception per impostare il messaggio di errore.
Il primo costruttore fornisce un messaggio predefinito quando non ne viene specificato uno.
Il secondo costruttore accetta un messaggio personalizzato, così chi lo chiama può descrivere l'errore in dettaglio.
Ora puoi lanciare la tua eccezione personalizzata quando necessario:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Quando questo codice viene eseguito con un'età negativa, genererà la tua eccezione personalizzata con il messaggio "Age cannot be negative."
Nota: Negli esercizi di questa lezione, le funzioni di convalida restituiscono true quando l'input è valido e generano un'eccezione personalizzata quando non lo è. Poiché un'eccezione non gestita interrompe immediatamente l'esecuzione, i casi di test devono solo verificare il percorso di ritorno true: l'eccezione stessa è il risultato osservabile per gli input non validi.
Sfida
MedioCrea una classe di eccezione personalizzata denominata InvalidTemperatureException che eredita da Exception. Deve avere:
- Un costruttore predefinito che imposta il messaggio "Temperature is not valid."
- Un costruttore che accetta un messaggio personalizzato.
Poi implementa un metodo denominato checkTemperature che:
- Accetta un parametro intero che rappresenta una temperatura in gradi Celsius
- Lancia un'
InvalidTemperatureExceptioncon il messaggio "Temperature below absolute zero!" se la temperatura è inferiore a -273 - Restituisce true se la temperatura è valida
Provalo tu
using System;
class CheckTemperature
{
// Crea qui la tua classe di eccezione personalizzata
public static bool checkTemperature(int celsius)
{
// Scrivi qui il tuo codice
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Fondamenti degli array 2DDichiarare e inizializzare array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DArray irregolariOperazioni comuni sulle matriciRipasso: array multidimensionali4Tecniche di controllo del flusso
Uscite anticipateClausole di guardiaIstruzioni di salto (goto)Break e continueAppiattire le condizioni annidate2Decisioni avanzate
Condizioni multipleLogica booleana complessaConfronto tra if e switchIstruzioni switch annidateRiepilogo - decisioni avanzate5Gestione delle eccezioni
Nozioni di base su try-catchTipi di eccezioneBlocchi catch multipliLavorare con i fileBlocco finallyUsing vs. try-finallyEccezioni personalizzateRiepilogo - gestione degli errori3Miglioramenti dei cicli
Prestazioni dei cicliIterare strutture complesseOgni tipo di cicloRifattorizzare i cicliRiepilogo - Cicli ottimizzati6Gestione dei valori null
Fondamenti dei riferimenti nullTipi valore nullableSchemi di controllo dei valori nullProgrammazione difensivaRiepilogo: sicurezza rispetto ai valori nullEsercitati da solo: Compilatore C# online