Cursus Raku / Objecten, in- en
uitvoer en excepties / Excepties /
De CATCH-phaser / Exercises / Melden en
herstellen
Oplossing: Melden en herstellen
Hier is een mogelijke oplossing voor de taak.
Code
my $timeout = 30;
{
die 'config missing';
$timeout = 60;
CATCH {
default {
say "warning: {.message}; keeping default";
}
}
}
say "timeout is $timeout seconds";🦋 Je kunt de broncode vinden in het bestand report-and-recover.raku.
Uitvoer
warning: config missing; keeping default
timeout is 30 secondsOpmerkingen
Wanneer de
diewerpt, wordt de rest van het blok opgegeven — dus de regel$timeout = 60draait nooit en houdt$timeoutzijn standaardwaarde30.De
CATCHhandelt de exceptie af (door een waarschuwing af te drukken), dus het programma stopt niet. Het gaat verder met de standaardwaarde, en dat is precies wat herstellen van een fout betekent: het probleem noteren, terugvallen op iets veiligs, en doorgaan.