Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni / Guasti morbidi / Exercises / Trovato o non trovato
Soluzione: Trovato o non trovato
Ecco una possibile soluzione del compito.
Codice
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}";
}🦋 Trova il programma nel file lookup.raku.
Output
not found
reason: no such keyCommenti
lookup('z')chiamafail, quindi restituisce unFailurenon definito.Poiché il risultato non è definito, il programma stampa
not foundinvece di provare a usare il valore fallito.Un
Failureporta comunque con sé l’eccezione che descrive che cosa è andato storto.$r.exceptionla recupera — il che segna anche il fallimento come gestito, così non esploderà più tardi — e.messagelegge il testo passato afail,no such key.