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 ok

Commenti

  1. Il phaser CATCH è dentro il blocco che tratta il singolo elemento, quindi gestisce un die per quel solo elemento. Poiché l’eccezione viene gestita lì, non sfugge mai fino a fermare l’intero ciclo.

  2. Questo è l’uso tipico di CATCH rispetto a try: un fallimento in un’iterazione viene affrontato localmente, e il ciclo passa all’elemento successivo. L’elemento centrale fallisce, ma i due elementi ok vengono comunque elaborati.

Gestite e proseguite   |   Sopravvivete a un ciclo