Cuando capturamos excepciones podemos saber cual fue el error ocurrido mediante los códigos de error del Firebird. Estos son de dos clases y sus nombres son: SQLCODE y GDSCODE.

Los SQLCODE son más genéricos, mientras que los GDSCODE son más específicos, más detallados. Con los SQLCODE podemos usar números, en cambio con los GDSCODE debemos usar sus símbolos.

Una lista de todos los códigos de error y sus respectivas explicaciones (en inglés) podemos encontrar aquí:

http://ibexpert.net/ibe/index.php?n=Doc.Firebird21ErrorCodes

(pensé traducirla y publicarla en castellano pero ya es demasiado larga, quizás otro día)

SQLCODE. Valores y definiciones

SQLCODE  Mensaje     Descripción
      0  SUCCESS     La operación finalizó exitosamente
1 .. 99  SQLWARNING  Un aviso del Servidor (no es un error)
    100  NOT FOUND   No se encontraron filas. No es un error
    < 0  SQLERROR    Ocurrió un error, sus códigos van del -1 al -999

Ejemplo 1:

SET TERM ^ ;

CREATE PROCEDURE CAPTURAR_EXCEPCION_1
AS
   DECLARE VARIABLE lnMiNumero INTEGER;
   DECLARE VARIABLE lnResultado INTEGER;
BEGIN

   lnMiNumero = 21;

   lnResultado = lnMiNumero / 0;

   WHEN GDSCODE arith_except DO BEGIN -- Ocurrió una excepción aritmética
      lnResultado = -999;
      EXCEPTION;
   END

END^

SET TERM ; ^

Artículos relacionados:

Entendiendo las excepciones

Capturando excepciones

El índice del blog Firebird21

Anuncios