Estructura de control TRY-CATCH-ENDRY

Podemos tratar una excepción si la sentencia que la emitió se encuentra en una estructura de control TRY-ENDTRY. Tratamos la excepción mediante la sentencia CATCH en la estructura TRY-ENDTRY.
El bloque TRY contiene las sentencias para las que es necesario tratar las excepciones. Un bloque CATCH contiene el programa de control de excepciones que se ejecuta si una excepción especificada se ha producido en el bloque TRY asociado.
Como todas las estructuras de control en objetos ABAP, podemos anidar las estructuras TRY-ENDTRY hasta cualquier profundidad. Particularmente, los bloques TRY, CATCH y CLEANUP pueden contener estructuras TRY-ENDTRY completas.
Podemos especificar cualquier número de clases de excepción para la sentencia CATCH. De esta manera, se define un programa de control de excepciones para todas estas clases de excepción y sus subclases.
Si se produce una excepción, el sistema busca la sentencia CATCH coincidente en la estructura TRY-ENDTRY que rodea inmediatamente a la sentencia. Busca a través de los bloques CATCH para la clase de excepción relevante o las clases superiores de la jerarquía de herencia. Si encuentra alguna de las clases de excepción relevantes, el programa navega directamente hacia el programa de control. Si el sistema no encuentra una sentencia CATCH que coincida, busca gradualmente hacia el exterior en las estructuras TRY-ENDTY circundantes. Si no puede encontrar un programa de control dentro del mismo procedimiento, el sistema intenta propagar la excepción al programa de llamada. Este proceso se discutirá de manera más detallada posteriormente.
Si una estructura TRY-ENDTRY contiene un bloque CLEANUP, este bloque se ejecuta cuando se retira la estructura TRY-ENDTRY, porque el sistema no puede encontrar un controlador dentro de la estructura TRY-ENDTRY, pero sí en una estructura TRY-ENDTRY circundante o en un programa de llamadas.
Para entenderlo mejor, en este artículo vamos a ver un ejemplo práctico.
En el mismo programa del artículo anterior “Emitir excepciones basadas en clases” utilizamos el evento START-OF-SELECTION para llamar al método de la clase LCL_CHECK_USER, método que emite la excepción. Captura la excepción en la estructura de control TRY-CATCH-ENDTRY.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *