Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni
Il phaser CATCH
Il blocco try è comodo, ma tratta l’intero blocco come
un’unica unità: o funziona o non funziona. Il phaser CATCH
ti dà un controllo più fine — ti permette di gestire un’eccezione
dentro il blocco in cui è avvenuta e di decidere che cosa
fare.
CATCH è un phaser, come quelli che hai incontrato nella
sezione sul flusso di controllo. Lo
scrivi ovunque dentro un blocco; gira solo se lì viene sollevata
un’eccezione. L’eccezione è disponibile come argomento corrente
$_:
{
die 'Boom!';
CATCH {
default {
say 'Caught: ' ~ .message;
}
}
}
say 'after';Il programma stampa:
Caught: Boom!
afterIl blocco default dentro CATCH gestisce
qualunque eccezione. Una volta che è girato, l’eccezione è considerata
gestita, quindi il programma non si ferma: l’esecuzione prosegue dopo il
blocco che lo racchiude, ed è per questo che viene stampato
after.
Senza il CATCH, il die avrebbe chiuso il
programma prima che si potesse raggiungere after.
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.