Raku kurss / Objekti, ievade/izvade un izņēmumi / Izņēmumi / Mīkstās kļūmes / Exercises / Atrasts vai nav atrasts

Risinājums: Atrasts vai nav atrasts

Šeit ir iespējams risinājums uzdevumam.

Kods

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

🦋 Atrodiet programmu failā lookup.raku.

Izvade

not found
reason: no such key

Komentāri

  1. lookup('z') izsauc fail, tāpēc tā atgriež nedefinētu Failure.

  2. Tā kā rezultāts ir nedefinēts, programma izdrukā not found, nevis mēģina neizdevušos vērtību izmantot.

  3. Failure joprojām nes līdzi izņēmumu, kas apraksta, kas noticis greizi. $r.exception to izvelk — un tas arī atzīmē neveiksmi kā apstrādātu, tāpēc tā vēlāk neuzsprāgs — un .message nolasa tekstu, kas padots fail, proti, no such key.

Kursa navigācija

Atrasts vai nav atrasts   |   Rezerves vērtība