Curso de Raku / Objetos, entrada/salida y excepciones / Excepciones

El phaser CATCH

El bloque try es cómodo, pero trata el bloque entero como una sola unidad: o funciona o no. El phaser CATCH te da un control más fino: te permite manejar una excepción dentro del bloque donde ocurrió y decidir qué hacer.

CATCH es un phaser, como los que conociste en la sección sobre el flujo de control. Lo escribes en cualquier punto dentro de un bloque; solo se ejecuta si allí se lanza una excepción. La excepción está disponible como el tema $_:

{
    die 'Boom!';

    CATCH {
        default {
            say 'Caught: ' ~ .message;
        }
    }
}

say 'after';

El programa imprime:

Caught: Boom!
after

El bloque default dentro de CATCH maneja cualquier excepción. Una vez que se ha ejecutado, la excepción se considera manejada, así que el programa no se detiene: la ejecución sigue después del bloque que lo contiene, y por eso se imprime after.

Sin el CATCH, el die habría terminado el programa antes de que se pudiera alcanzar after.

Práctica

Resuelve 1 cuestionario sobre el contenido de este tema.

Ejercicios

Esta sección contiene 3 ejercicios. Mira todos los temas de esta sección antes de empezar los ejercicios.

  1. Maneje y continúe
  2. Sobreviva a un bucle
  3. Informe y recupérese

Quiz — try   |   Maneje y continúe