Es correcto lo que menciona Guillotemarc con respecto de las transacciones. Sin embargo, como estás utilizando Firebird 2.5, entonces puedes hacerlo dentro de una transacción autónoma. Aqui pongo una posible solución a tu problema...
Código SQL
[-]
begin
WHEN EXCEPTION NOMBREEXCEPCION DO
BEGIN
EXCEPTION NOMBREEXCEPCION 'Texto de la excepción.';
ON AUTONOMOUS TRANSACTION DO
BEGIN
UPDATE TABLA SET CAMPO1 = 'DESCRIPCIÓN DE LA EXCEPCIÓN' WHERE CAMPOCLAVE = 'DATO';
END
END
end
Por favor, antes de poner tal cual, este procedimiento revisa que TODA la lógica este correcta. Simplemente trato de ejemplificar que este problema se puede solucionar de esta manera.
Saludos.
Gerardo Suárez Trejo
P.D. No dejes de publicar tu código final y platicarnos como te fue... saludos nuevamente