THROW raises a meaningful SQL Server error, either by rethrowing an error already caught or by issuing a specified ad hoc error. It belongs in deliberate error handling rather than as a substitute for cleaning up failed work. section 7.1 section 7.7
A failed statement inside a transaction can leave an open transaction behind if nothing rolls it back. Pair transaction handling with TRY..CATCH so failures are trapped, the transaction can be handled, and an error can be surfaced to the caller. section 7.1 section 7.7
Use THROW as part of a safer failure path:
- Catch errors with TRY..CATCH rather than allowing failures to pass unmanaged. section 7.7
- Roll back or otherwise resolve the transaction state before returning from failed transactional work. section 7.1
- Raise a meaningful error message so an application or support process can identify and act on the failure. section 7.7


