Cursus Raku / Objecten, in- en
uitvoer en excepties / Excepties /
Excepties opvangen met try
Niet elke fout komt meteen
Een geworpen exceptie legt het programma standaard meteen stil, en
met try vang je hem. Maar niet alles wat op een fatale fout
lijkt, legt je programma werkelijk stil op het moment dat het gebeurt.
Raku heeft mislukkingen die stil blijven — die hun reactie uitstellen
tot je het resultaat gebruikt, of die je toelaten ze te bekijken en door
te gaan. Een paar daarvan zijn in dit deel al langsgekomen, en het loont
ze op één plek bij elkaar te zetten.
Een deling door nul. Delen door nul ontploft niet waar het geschreven staat. De slechte waarde wordt geproduceerd en stilletjes vastgehouden; ze werpt pas wanneer je haar gebruikt — bijvoorbeeld door haar af te drukken of te coerceren:
my $x = 1 / 0; # no error here
say 'still running';
say $x; # only now does it throwDit uitgestelde gedrag, en de Failure-objecten erachter,
zijn het onderwerp van Zachte
mislukkingen.
Een mislukkend extern programma. Een
Proc die door run of shell
teruggegeven wordt en die niet succesvol geëindigd is, werpt niet op het
moment dat hij gemaakt wordt. Hij werpt alleen als je hem onafgehandeld
weggooit; bewaar hem en lees .exitcode (of test
hem als boolean) en de mislukking blijft een gewone waarde waarop je
kunt reageren. Je zag dit in Het
Proc-object.
De rode draad: een mislukking kan uitgesteld worden —
omgezet in een waarde die je bekijkt wanneer je er klaar voor bent, in
plaats van een onmiddellijke crash. try en de
CATCH-faser gaan over de fouten die meteen geworpen worden;
deze mechanismen gaan over de fouten die dat niet doen.
Cursusnavigatie
← Excepties opvangen met try
| Vang de fout
op →
💪 Of ga direct naar de
oefeningen in deze sectie.