0 calificaciones0% encontró este documento útil (0 votos)
34 vistas1 página
Este documento describe la sentencia CATCH-ENDCATCH en ABAP para la captura de excepciones. CATCH-ENDCATCH permite capturar una sola excepción a la vez de entre una lista de excepciones individuales o genéricas. Capturar las excepciones genéricas asegura atrapar cualquier error pero sin detalles, mientras que capturar excepciones individuales puede no atrapar el error.
Este documento describe la sentencia CATCH-ENDCATCH en ABAP para la captura de excepciones. CATCH-ENDCATCH permite capturar una sola excepción a la vez de entre una lista de excepciones individuales o genéricas. Capturar las excepciones genéricas asegura atrapar cualquier error pero sin detalles, mientras que capturar excepciones individuales puede no atrapar el error.
Este documento describe la sentencia CATCH-ENDCATCH en ABAP para la captura de excepciones. CATCH-ENDCATCH permite capturar una sola excepción a la vez de entre una lista de excepciones individuales o genéricas. Capturar las excepciones genéricas asegura atrapar cualquier error pero sin detalles, mientras que capturar excepciones individuales puede no atrapar el error.
Descripción y ejemplos de la sentencia CATCH ... ENDCATCH para la captura de excepciones.
REPORT ZCATCH.
DATA: A TYPE I, B TYPE I, C TYPE P.
* Dentro de un CATCH-ENDCATCH sólo se puede capturar UNA excepción (la
* que encuentre primero de la lista). * Cuando se captura una excepción, asigna el SY-SUBRC y sale del bloque * CATCH-ENDCATCH. * ARITHMETIC_ERRORS y CONVERSION_ERRORS son las dos clases de excep- * ciones genéricas (en Java serían las superclases) el resto son subcla- * ses de ellas dos. * Si en el CATCH contemplo sólo excepciones individuales puede que no * capture el error. Si pongo las dos excepciones generales siempre cap- * turaré el error pero perderé el detalle. Una solución sería poner las * dos excepciones generales al final de la lista por si no encontrara la * excepción individual que encuentre la general, evitando así el DUMP. CATCH SYSTEM-EXCEPTIONS " Excepciones individuales BCD_ZERODIVIDE = 1 BCD_OVERFLOW = 10 COMPUTE_LOG_ERROR = 2 ADDF_INT_OVERFLOW = 3 " Excepciones genéricas ARITHMETIC_ERRORS = 4 CONVERSION_ERRORS = 5.
" La excepción 'BCD_ZERODIVIDE' sólo es capturada si el resultado, 'C',
" va a un dato de tipo P. A = 10. B = 0. C = A / B. " <--- BCD_ZERODIVIDE (sólo si C es de tipo P)
ENDCATCH.
CATCH SYSTEM-EXCEPTIONS BCD_OVERFLOW = 10.
A = 99999999999999999999999999999. " <--- BDC_OVERFLOW
ENDCATCH.
Para call functions ver doc en KM sobre EXCEPTIONS ERROR_MESSAGE = 1.