Corso di Raku / Oggetti,
input/output ed eccezioni / Eccezioni / Il
phaser CATCH / Exercises / Gestite e
proseguite
Soluzione: Gestite e proseguite
Ecco una possibile soluzione del compito.
Codice
for <ok bad ok> -> $item {
{
die 'boom' if $item eq 'bad';
say "processed $item";
CATCH {
default {
say "skipped ($item): {.message}";
}
}
}
}🦋 Trova il programma nel file handle-and-continue.raku.
Output
processed ok
skipped (bad): boom
processed okCommenti
Il phaser
CATCHè dentro il blocco che tratta il singolo elemento, quindi gestisce undieper quel solo elemento. Poiché l’eccezione viene gestita lì, non sfugge mai fino a fermare l’intero ciclo.Questo è l’uso tipico di
CATCHrispetto atry: un fallimento in un’iterazione viene affrontato localmente, e il ciclo passa all’elemento successivo. L’elemento centrale fallisce, ma i due elementiokvengono comunque elaborati.