Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni / Oggetti eccezione / Exercises / Abbinate il tipo

Soluzione: Abbinate il tipo

Ecco una possibile soluzione del compito.

Codice

{
    my $x = 1 / 0;
    say $x;

    CATCH {
        when X::Numeric::DivideByZero {
            say 'cannot divide by zero';
        }
    }
}

🦋 Trova il programma nel file match-the-type.raku.

Output

cannot divide by zero

Commenti

  1. In Raku 1 / 0 non esplode immediatamente; produce un Failure pigro. L’eccezione viene sollevata solo quando usiamo il valore, qui provando a farne say.

  2. L’eccezione sollevata è del tipo incorporato X::Numeric::DivideByZero, e when X::Numeric::DivideByZero la riconosce con precisione. Confrontare un tipo specifico, invece di intercettare tutto con default, ti permette di gestire errori diversi in modi diversi.

Abbinate il tipo   |   Anteponete un prefisso al messaggio