Una excepción es un mensaje que el Servidor le envía al Cliente para informarle que ocurrió un error.

(Si no tienes claro el concepto de Cliente/Servidor puedes leer este artículo: Entendiendo Cliente/Servidor)

Una excepción consta de dos partes:

  • El nombre de la excepción
  • El mensaje de la excepción

Aquí está el ejemplo de una excepción:

CREATE EXCEPTION E_SIN_CODIGO 'Falta el código del producto'

En este ejemplo, E_SIN_CODIGO es el nombre de la excepción y ‘Falta el código del producto’ es el mensaje que está asociado a esta excepción.

¿Qué sucede cuándo se envía una excepción?

Que el Firebird detiene lo que estaba haciendo y regresa al nivel anterior.

¿Dónde se usan las excepciones?

En los stored procedures y en los triggers.

Veamos un ejemplo:

CREATE EXCEPTION E_SIN_SUCURSAL 'Falta el Código de la Sucursal';
CREATE EXCEPTION E_SIN_IDENTIFICADOR 'No existe el Identificador';
CREATE EXCEPTION E_SIN_NOMBRE 'Falta el Nombre, no se puede dejar el nombre vacío';

CREATE TRIGGER PRODUCTOS_BIU FOR PRODUCTOS
   ACTIVE BEFORE INSERT OR UPDATE
   POSITION 1
AS
BEGIN

   IF (NEW.PRD_CODSUC IS NULL OR NEW.PRD_CODSUC < 0) THEN
      EXCEPTION E_SIN_SUCURSAL;

   IF (NEW.PRD_IDENTI IS NULL OR NEW.PRD_IDENTI <= 0) THEN
      EXCEPTION E_SIN_IDENTIFICADOR;

   IF (NEW.PRD_NOMBRE IS NULL OR CHAR_LENGTH(TRIM(NEW.PRD_NOMBRE)) = 0) THEN
      EXCEPTION E_SIN_NOMBRE;

END

Este es un trigger que se disparará antes de insertar o actualizar un producto y que sirve para validar que no se introduzcan datos incorrectos en la  tabla PRODUCTOS. Si se dispara una de esas excepciones entonces la fila no será ni insertada ni actualizada y el Cliente recibirá la excepción correspondiente para que sepa que ocurrió un error y también cual fue ese error

  • Si el código de la Sucursal es nulo o el Código de la Sucursal es menor que cero, se enviará la excepción E_SIN_SUCURSAL
  • Si el Identificador es nulo o el Identificador es menor o igual que cero, se enviará la excepción E_SIN_IDENTIFICADOR
  • Si el Nombre es nulo o el nombre está vacío, se enviará la excepción E_SIN_NOMBRE

Resumiendo:

  • Una excepción es un mensaje que el Servidor le envía al Cliente para informarle que ocurrió un error
  • Una excepción consta de dos partes:
    • El nombre de la excepción
    • El mensaje de la excepción
  • Cuando se envía una excepción el Firebird detiene lo que estaba haciendo y regresa al nivel anterior
  • Las excepciones se usan en los stored procedures y en los triggers

Artículos relacionados:

Entendiendo a los stored procedures

Entendiendo a los triggers

El índice del blog Firebird21

El foro del blog Firebird21

 

 

Anuncios