Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Ausnahmen / Weiche Fehler / Exercises / Nachschlagen oder nicht gefunden

Lösung: Nachschlagen oder nicht gefunden

Hier ist eine mögliche Lösung der Aufgabe.

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}";
}

🦋 Du findest den Quellcode in der Datei lookup.raku.

Ausgabe

not found
reason: no such key

Kommentare

  1. lookup('z') ruft fail auf und liefert daher ein undefiniertes Failure.

  2. Weil das Ergebnis undefiniert ist, gibt das Programm not found aus, statt den fehlgeschlagenen Wert zu verwenden.

  3. Ein Failure trägt weiterhin die Ausnahme mit sich, die beschreibt, was schiefging. $r.exception holt sie hervor — was den Fehlschlag zugleich als behandelt markiert, sodass er später nicht doch noch explodiert — und .message liest den an fail übergebenen Text, no such key.

Kursnavigation

Nachschlagen oder nicht gefunden   |   Ein Ausweichwert