Curso de Raku / Objetos, entrada/salida y excepciones / Excepciones / Excepciones propias / Exercises / Dos tipos de excepción
Solución: Dos tipos de excepción
Aquí tienes una posible solución para la tarea.
Código
class TooSmall is Exception {
method message { 'too small' }
}
class TooBig is Exception {
method message { 'too big' }
}
for TooSmall, TooBig -> $type {
{
$type.new.throw;
CATCH {
when TooSmall { say 'small' }
when TooBig { say 'big' }
}
}
}🦋 Puedes encontrar el código fuente en el archivo two-exceptions.raku.
Salida
small
bigComentarios
El bucle lanza una
TooSmallen la primera pasada y unaTooBigen la segunda, cada una dentro de su propio bloque con su propioCATCH.El phaser
CATCHtiene una ramawhenpara cada tipo de excepción. En cada pasada solo se ejecuta la rama que coincide con el tipo lanzado, así que la primera imprimesmally la segundabig. Así es como un mismo conjunto de manejadores reacciona de forma distinta ante clases distintas de error.