Published on

January 3, 2026

Manejo de errores en SQL Server con TRY…CATCH

Uno de los desafíos en versiones anteriores de SQL Server era el manejo de errores. No era lo más fácil de hacer, ya que tenías opciones limitadas para manejar errores fatales. Sin embargo, con la introducción de SQL Server 2005, se introdujo un nuevo mecanismo de manejo de errores llamado TRY…CATCH.

El procesamiento TRY…CATCH te permite manejar errores de una manera más estructurada y eficiente. Cuando ocurre un error, el procesamiento en el bloque TRY se detiene y luego el error es capturado y procesado en el bloque CATCH. Veamos un ejemplo sencillo:


CREATE PROCEDURE usp_ExampleProc
AS
SELECT * FROM NonexistentTable;
GO

EXECUTE usp_ExampleProc

En el código anterior, creamos un procedimiento almacenado que selecciona datos de una tabla que no existe. Cuando ejecutamos el procedimiento almacenado, obtenemos un mensaje de error que indica que el objeto no existe.

Ahora, modifiquemos el código para incluir el bloque TRY…CATCH:


BEGIN TRY
    EXECUTE usp_ExampleProc
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() AS ErrorMessage;
END CATCH;

En este código modificado, el error es capturado en el bloque CATCH y podemos obtener información detallada sobre el error utilizando funciones como ERROR_NUMBER(), ERROR_MESSAGE(), y más. Esto nos permite manejar el error de manera elegante y continuar el procesamiento sin problemas.

Es importante tener en cuenta que puedes tener múltiples bloques TRY…CATCH en tu código, lo que permite un manejo de errores anidado. Aquí tienes un ejemplo:


BEGIN TRY
    BEGIN TRY
        EXECUTE usp_ExampleProc
    END TRY
    BEGIN CATCH
        SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity;
    END CATCH;
    
    EXECUTE usp_ExampleProc
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity;
END CATCH;

En este ejemplo, el error es capturado y procesado en el bloque CATCH interno, y luego el código continúa ejecutándose. El error es capturado nuevamente en el bloque CATCH externo, demostrando la capacidad de manejar errores en diferentes niveles de anidamiento.

En general, el procesamiento TRY…CATCH en SQL Server proporciona una forma más sólida y flexible de manejar errores. Permite un mejor reporte y manejo de errores, lo que facilita la solución de problemas y la resolución de problemas en tus aplicaciones de SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.