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 seconds

Opmerkingen

  1. Wanneer de die werpt, wordt de rest van het blok opgegeven — dus de regel $timeout = 60 draait nooit en houdt $timeout zijn standaardwaarde 30.

  2. De CATCH handelt 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.

Cursusnavigatie

Melden en herstellen   |   Quiz — CATCH