Cursus Raku / Obiecta, introitus et exitus, et exceptiones / Exceptiones / Defectus molles / Exercises / Inventum an non inventum

Solutio: Inventum an non inventum

Ecce solutio possibilis huius exercitationis.

Codex

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

🦋 Inveni codicem fontem in archivo lookup.raku.

Exitus

not found
reason: no such key

Commentarii

  1. lookup('z') fail vocat, itaque Failure indefinitum reddit.

  2. Quia effectus indefinitus est, programma not found imprimit potius quam valore defecto uti conetur.

  3. Failure tamen exceptionem fert quae describit quid male ceciderit. $r.exception eam recuperat — quod etiam defectum ut tractatum notat, ita ut postea non displodat — et .message textum ad fail traditum legit, no such key.

Inventum an non inventum   |   Valor subsidiarius