Curso de Raku / Objetos, entrada/salida y excepciones / Excepciones / El phaser CATCH / Exercises / Sobreviva a un bucle

Solución: Sobreviva a un bucle

Aquí tienes una posible solución para la tarea.

Código

for 1, 2, 3 -> $n {
    if $n == 2 {
        die "bad: $n";
    }
    say "ok: $n";

    CATCH {
        default {
            say "caught: " ~ .message;
        }
    }
}

🦋 Puedes encontrar el código fuente en el archivo survive-a-loop.raku.

Salida

ok: 1
caught: bad: 2
ok: 3

Comentarios

  1. El phaser CATCH maneja una excepción lanzada dentro del cuerpo del bucle, así que el die de la segunda iteración se captura en lugar de ser fatal.

  2. Una vez manejada la excepción, el bucle simplemente continúa con el valor siguiente, y por eso ok: 3 se sigue imprimiendo.

Sobreviva a un bucle   |   Informe y recupérese