Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni

Oggetti eccezione

Un’eccezione è un oggetto, come qualunque altro in Raku. Quando scrivi die 'something failed', Raku avvolge il tuo messaggio in un oggetto eccezione di tipo X::AdHoc.

Dentro un CATCH puoi ispezionare quell’oggetto. Il suo tipo viene da .^name e il suo testo da .message:

{
    die 'something failed';

    CATCH {
        default {
            say .^name;   # X::AdHoc
            say .message; # something failed
        }
    }
}

Conoscere il tipo ti permette di trattare errori diversi in modo diverso. Le eccezioni incorporate di Raku hanno tipi specifici, i cui nomi cominciano con X::, e puoi confrontarle con when, proprio come confrontavi valori in un blocco given/when:

{
    die 'something failed';

    CATCH {
        when X::AdHoc {
            say 'an ad-hoc error: ' ~ .message;
        }
        default {
            say 'some other error';
        }
    }
}

Questo stampa an ad-hoc error: something failed, perché l’eccezione corrisponde al tipo X::AdHoc. Confrontare il tipo è la base della gestione di errori specifici — l’idea su cui si costruisce la sezione sulle eccezioni personalizzate.

Pratica

Risolvi 1 quiz sul contenuto di questo argomento.

Esercizi

Questa sezione contiene 3 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.

  1. Indicate l’errore
  2. Abbinate il tipo
  3. Anteponete un prefisso al messaggio

Quiz — CATCH   |   Indicate l’errore