Curso de Raku / Objetos, entrada/salida y excepciones / Excepciones / Fallos suaves / Exercises / Búsqueda o no encontrado
Solución: Búsqueda o no encontrado
Aquí tienes una posible solución para la tarea.
Código
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}";
}🦋 Puedes encontrar el código fuente en el archivo lookup.raku.
Salida
not found
reason: no such keyComentarios
lookup('z')llama afail, así que devuelve unFailureno definido.Como el resultado no está definido, el programa imprime
not founden lugar de intentar usar el valor fallido.Un
Failuresigue llevando consigo la excepción que describe qué salió mal.$r.exceptionla recupera — lo que además marca el fallo como manejado, así que no estallará más tarde — y.messagelee el texto que se le pasó afail,no such key.