Cursus Raku / Objecten, in- en
uitvoer en excepties / Excepties /
De CATCH-phaser / Exercises / Afhandelen en
doorgaan
Oplossing: Afhandelen en doorgaan
Hier is een mogelijke oplossing voor de taak.
Code
for <ok bad ok> -> $item {
{
die 'boom' if $item eq 'bad';
say "processed $item";
CATCH {
default {
say "skipped ($item): {.message}";
}
}
}
}🦋 Je kunt de broncode vinden in het bestand handle-and-continue.raku.
Uitvoer
processed ok
skipped (bad): boom
processed okOpmerkingen
De
CATCH-faser zit binnen het blok per item, dus hij handelt eendieaf voor precies dat ene item. Omdat de exceptie daar afgehandeld wordt, ontsnapt ze nooit om de hele lus stil te leggen.Dit is het typische gebruik van
CATCHboventry: een mislukking in één iteratie wordt lokaal afgehandeld, en de lus gaat door naar het volgende item. Het middelste item mislukt, maar de tweeok-items worden gewoon verwerkt.