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

Excepties opvangen met try

Wanneer er in een Raku-programma iets misgaat — een ontbrekend bestand, een expliciete die — wordt er een exceptie geworpen. Een onafgehandelde exceptie legt het programma standaard stil. Met het try-blok kun je code draaien die kan mislukken zonder te crashen.

Je wikkelt de riskante code in een try-blok. Als er binnen dat blok een exceptie geworpen wordt, stopt het blok daar, maar het programma gaat door:

my $result = try {
    die 'Boom!';
};

say "Still works";

De die wordt door de try gevangen, dus het programma crasht niet — het gaat regelrecht door naar de volgende opdracht en drukt af:

Still works

Wanneer het blok zo mislukt, evalueert het naar een ongedefinieerde waarde, dus $result is ongedefinieerd:

say $result.defined; # False

De gevangen exceptie wordt in de bijzondere variabele $! bewaard. Daar kun je haar melding uit lezen:

say $!.message; # Boom!

try maakt van een fatale fout dus iets wat je programma kan bekijken en waarop het kan reageren. Als het blok zonder exceptie draait, bevat $result zijn waarde en is $! ongedefinieerd.

Ook in deze sectie

Praktijk

Maak de 1 quiz over de inhoud van deze sectie.

Oefeningen

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

  1. Vang de fout op
  2. Als er niets misgaat
  3. Proberen of standaardwaarde

Cursusnavigatie

Excepties   |   Niet elke fout komt meteen