MS SQL Server – TRY CATCH THROW

In Microsoft SQL Server, TRY, CATCH, and THROW are Transact-SQL constructs used for error handling and exception management within stored procedures, functions, and batches of SQL code. They help developers handle and respond to errors gracefully. Here’s an overview of each:

1. TRY-CATCH:

  • TRY and CATCH blocks are used together to handle errors and exceptions in SQL Server.
  • The TRY block contains the code that might raise an error, while the CATCH block contains the code to handle that error if it occurs.
  • If an error occurs in the TRY block, control is transferred to the CATCH block, allowing you to perform actions like logging the error, rolling back transactions, or providing a user-friendly error message. BEGIN TRY -- Code that might raise an error END TRY BEGIN CATCH -- Error handling code END CATCH Example: BEGIN TRY INSERT INTO MyTable (Column1, Column2) VALUES (1, 'Value1'); END TRY BEGIN CATCH PRINT 'An error occurred: ' + ERROR_MESSAGE(); END CATCH

2. THROW:

  • The THROW statement is used within the CATCH block to re-throw the error or to raise a new custom error.
  • It can be used to pass error information up the call stack or to raise user-defined exceptions with custom error messages and error codes.
  • THROW can include an error message, severity level, and state code. THROW [error_number, message, state] Example: BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); DECLARE @ErrorSeverity INT = ERROR_SEVERITY(); DECLARE @ErrorState INT = ERROR_STATE(); RAISEERROR(@ErrorMessage, @ErrorSeverity, @ErrorState); END CATCH In this example, the THROW statement is used to re-throw the original error with custom error message, severity, and state.

Error handling with TRY, CATCH, and THROW is a best practice in SQL Server development. It helps ensure that errors are captured, logged, and handled gracefully, reducing the impact of unexpected issues on database operations and providing better feedback to users and developers.