Raku-Kurs / Objekte, Ein- und
Ausgabe und Ausnahmen / Ausnahmen /
Der CATCH-Phaser / Exercises / Melden und
erholen
Lösung: Melden und erholen
Hier ist eine mögliche Lösung der Aufgabe.
Code
my $timeout = 30;
{
die 'config missing';
$timeout = 60;
CATCH {
default {
say "warning: {.message}; keeping default";
}
}
}
say "timeout is $timeout seconds";🦋 Du findest den Quellcode in der Datei report-and-recover.raku.
Ausgabe
warning: config missing; keeping default
timeout is 30 secondsKommentare
Wenn das
diewirft, wird der Rest des Blocks aufgegeben — die Zeile$timeout = 60läuft also nie, und$timeoutbehält seinen Standardwert30.Das
CATCHbehandelt die Ausnahme (indem es eine Warnung ausgibt), das Programm hält also nicht an. Es läuft mit dem Standardwert weiter, und genau das heißt, sich von einem Fehler zu erholen: das Problem festhalten, auf etwas Sicheres ausweichen und weitermachen.