Raku kurss / Objekti,
ievade/izvade un izņēmumi / Izņēmumi / Fāzeris
CATCH / Exercises
/ Ziņojiet un
atgūstieties
Risinājums: Ziņojiet un atgūstieties
Šeit ir iespējams risinājums uzdevumam.
Kods
my $timeout = 30;
{
die 'config missing';
$timeout = 60;
CATCH {
default {
say "warning: {.message}; keeping default";
}
}
}
say "timeout is $timeout seconds";🦋 Atrodiet programmu failā report-and-recover.raku.
Izvade
warning: config missing; keeping default
timeout is 30 secondsKomentāri
Kad
dieizmet izņēmumu, atlikusī bloka daļa tiek pamesta — tāpēc rinda$timeout = 60nekad neizpildās un$timeoutpatur savu noklusējumu30.CATCHizņēmumu apstrādā (izdrukājot brīdinājumu), tāpēc programma neapstājas. Tā turpinās ar noklusēto vērtību, un tieši to nozīmē atkopties no kļūdas: pamanīt problēmu, atkāpties uz kaut ko drošu un turpināt.