Menu
Coddy logo textTech

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.

challenge icon

Sfida

Medio

Crea una classe di eccezione personalizzata denominata InvalidTemperatureException che eredita da Exception. Deve avere:

  1. Un costruttore predefinito che imposta il messaggio "Temperature is not valid."
  2. 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'InvalidTemperatureException con 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
    }
    
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C# online