Curso de Raku / Objetos,
entrada/salida y excepciones / Excepciones / El
phaser CATCH / Exercises / Informe y
recupérese
Solución: Informe y recupérese
Aquí tienes una posible solución para la tarea.
Código
my $timeout = 30;
{
die 'config missing';
$timeout = 60;
CATCH {
default {
say "warning: {.message}; keeping default";
}
}
}
say "timeout is $timeout seconds";🦋 Puedes encontrar el código fuente en el archivo report-and-recover.raku.
Salida
warning: config missing; keeping default
timeout is 30 secondsComentarios
Cuando el
dielanza la excepción, el resto del bloque se abandona, así que la línea$timeout = 60nunca se ejecuta y$timeoutconserva su valor por defecto30.El
CATCHmaneja la excepción (imprimiendo un aviso), así que el programa no se detiene. Sigue adelante con el valor por defecto, que es exactamente lo que significa recuperarse de un error: tomar nota del problema, replegarse a algo seguro y continuar.