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
big

Comentarios

  1. El bucle lanza una TooSmall en la primera pasada y una TooBig en la segunda, cada una dentro de su propio bloque con su propio CATCH.

  2. El phaser CATCH tiene una rama when para cada tipo de excepción. En cada pasada solo se ejecuta la rama que coincide con el tipo lanzado, así que la primera imprime small y la segunda big. Así es como un mismo conjunto de manejadores reacciona de forma distinta ante clases distintas de error.

Dos tipos de excepción   |   Quiz — Excepciones propias