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!
afterHet 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.