Cursus Raku / Objecten, in- en uitvoer en excepties / Excepties

De CATCH-phaser

Het try-blok is handig, maar het behandelt het hele blok als één geheel: of het werkt, of het werkt niet. De CATCH-faser geeft je fijnere controle — hij laat je een exceptie afhandelen binnen het blok waar ze optrad, en beslissen wat er moet gebeuren.

CATCH is een faser, net als die uit de sectie over besturingsstructuren. Je schrijft hem ergens binnen een blok; hij draait alleen als daar een exceptie geworpen wordt. De exceptie is beschikbaar als het onderwerp $_:

{
    die 'Boom!';

    CATCH {
        default {
            say 'Caught: ' ~ .message;
        }
    }
}

say 'after';

Het programma drukt af:

Caught: Boom!
after

Het default-blok binnen CATCH handelt elke exceptie af. Zodra het gedraaid heeft, geldt de exceptie als afgehandeld, dus stopt het programma niet — de uitvoering gaat verder na het omvattende blok, en daarom wordt after afgedrukt.

Zonder de CATCH zou de die het programma beëindigd hebben voordat after bereikt kon worden.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Oefeningen

Deze sectie bevat 3 oefeningen. Bekijk alle onderwerpen van deze sectie voordat je aan de oefeningen begint.

  1. Afhandelen en doorgaan
  2. Overleef een lus
  3. Melden en herstellen

Cursusnavigatie

Quiz — try   |   Afhandelen en doorgaan