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 seconds

Komentoj

  1. Kiam la die ĵetas, la resto de la bloko estas forlasata — do la linio $timeout = 60 neniam ruliĝas, kaj $timeout konservas sian defaŭlton de 30.

  2. La CATCH traktas 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.

Kursa navigado

Raportu kaj resaniĝu   |   Kvizo — CATCH