Kurso de Raku / Objektoj, en-
kaj eligo kaj escepto / Esceptoj /
La fazero CATCH / Exercises / Raportu kaj
resaniĝu
Solvo: Raportu kaj resaniĝu
Jen ebla solvo de la tasko.
Kodo
my $timeout = 30;
{
die 'config missing';
$timeout = 60;
CATCH {
default {
say "warning: {.message}; keeping default";
}
}
}
say "timeout is $timeout seconds";🦋 Vi povas trovi la fontkodon en la dosiero report-and-recover.raku.
Eligo
warning: config missing; keeping default
timeout is 30 secondsKomentoj
Kiam la
dieĵetas, la resto de la bloko estas forlasata — do la linio$timeout = 60neniam ruliĝas, kaj$timeoutkonservas sian defaŭlton de30.La
CATCHtraktas la escepton (presante averton), do la programo ne haltas. Ĝi daŭras kun la defaŭlta valoro, kio estas ĝuste tio, kion resaniĝi de eraro signifas: noti la problemon, retiriĝi al io sekura, kaj daŭrigi.