TRY .. CATCH en #sqlserver

por | 21 junio, 2015

Seguimos con temas relacionados con el control de flujo en SQL Server que están dentro de la certificación 70-461. Un poco de teoría.

TRY…CATCH implementa un mecanismo de control de errores para T-SQL, permite incluir un grupo de instrucciones  en un bloque TRY. Si se produce un error en el bloque TRY, se transfiere a otro grupo de instrucciones que está incluido en un bloque CATCH.

No abarca varios bloques de instrucciones Transact-SQL (varios  BEGIN…END ) ni una construcción IF…ELSE. pero si se pueden anidar varios TRY…CATCH.

En  CATCH, se pueden utilizar las siguientes funciones del sistema para obtener información acerca del error que provocó la ejecución del bloque CATCH:

* ERROR_NUMBER() devuelve el número del error.

* ERROR_SEVERITY() la gravedad.

* ERROR_STATE()  número de estado del error.

* ERROR_PROCEDURE() nombre del procedimiento almacenado o desencadenador donde se produjo el error.

* ERROR_LINE()  el número de línea de la rutina que provocó el error.

* ERROR_MESSAGE() devuelve el texto completo del mensaje de error.

Como vemos nos da mucha información con lo que sería muy fácil el arreglarlo.

Es fundamental el utilizarlo como podéis observar.

TRY…CATCH no detecta:

* Advertencias o mensajes informativos que tiengan gravedad 10 o inferior.

*  Errores que tengangravedad 20 o superior que detienen el procesamiento de las tareas de SQL  Server Database Engine en la sesión. No se interrumpe la conexión con la base de datos, TRY…CATCH controlará el error.

  • Atenciones, como solicitudes de interrupción de clientes.
  •  Cuando el administrador del sistema finaliza la sesión mediante  KILL.

* Un bloque CATCH no controla los siguientes tipos de errores cuando se producen en el mismo  nivel de ejecución que la construcción TRY…CATCH:

*  Errores de compilación, como errores de sintaxis, que impiden la ejecución de un lote.

*  Errores que se producen durante la recompilación de instrucciones, como errores de resolución de nombres de objeto .

Bueno .. vamos a ver esto mejor trabajando con tablas en procedimientos almacenados, funciones,etc….

borrar

Deja una respuesta