Try catch en SQL Server

SQL Server permite implementar bloques de control de errores Try catch, muy conocidos por ser utilizados en lenguajes de programación como c#.

Try catch controlan los errores generados en las consultas, procedimientos almacenados, funciones, etc. al ser ejecutadas.

Estructura Try catch

La estructura del bloque try catch es similar en los lenguajes como C#, veamos como es.

BEGIN TRY  
     --Instrucciones
END TRY  
BEGIN CATCH  
     --Captura de errores
END CATCH

El bloque inicia con Begin try, posteriormente las instrucciones a ejecutar y cerramos el bloque con End try.

Inmediatamente al cerrar el try debemos de abrir el bloque catch, dentro de este colocamos las instrucciones de manejo de errores, por último, cerramos el catch.

Usar try catch en SQL

Creamos una consulta para utilizar Try catch, intencionalmente provocaremos un error para visualizar el mensaje de error.

BEGIN TRY
    SELECT 1/0;
END TRY  
BEGIN CATCH 
    SELECT 'ERROR DE OPERACION: '+ERROR_MESSAGE();
END CATCH
  • Mediante una división con 0 provocamos un error aritmético.
  • El error se captura en el catch, se muestra como una consulta.
  • ERROR_MESSAGE captura el mensaje del error, se concatena a la consulta para visualizarlo.

Al ejecutar esta consulta en SQL server podrás obtener el resultado siguiente.

Try catch en SQL Server

Puedes notar el mensaje de error y que es en la operación aritmética (un valor superior a 0 no es divisible entre 0).

Podría interesarte Condicionante IF ELSE en SQL Server  

La manera de cómo manejar los errores ya es de acuerdo con el aplicativo, si se almacena o no se hace nada.

No todos los errores son capturados, los errores que detienen la base de datos generan que la consulta termine.

Para este tipo de errores es obligatorio corregir la consulta, por ejemplo, al insertar un registro sin todas las columnas obligatorias.

Error no capturado por try catch de SQL

El mensaje anterior detiene la ejecución de la consulta, no es marcado como error, pero al ejecutar aparece.

2 Comments

  1. y como lo utilizo con mi tabla, por ejemplo para que no añadan 0 o un dato falso o tonto. O para eso no sirve?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *