Cursus Raku / Objecten, in- en uitvoer en excepties / Excepties / Zachte fouten / Exercises / Opzoeken of niet gevonden
Oplossing: Opzoeken of niet gevonden
Hier is een mogelijke oplossing voor de taak.
Code
sub lookup($key) {
fail 'no such key' if $key ne 'a';
return 100;
}
my $r = lookup('z');
if $r.defined {
say $r;
}
else {
say 'not found';
say "reason: {$r.exception.message}";
}🦋 Je kunt de broncode vinden in het bestand lookup.raku.
Uitvoer
not found
reason: no such keyOpmerkingen
lookup('z')roeptfailaan en geeft dus een ongedefinieerdeFailureterug.Omdat het resultaat ongedefinieerd is, drukt het programma
not foundaf in plaats van de mislukte waarde te gebruiken.Een
Failuredraagt nog steeds de exceptie mee die beschrijft wat er misging.$r.exceptionhaalt hem op — wat de mislukking meteen als afgehandeld markeert, zodat hij later niet alsnog ontploft — en.messageleest de tekst die aanfailis meegegeven,no such key.