在 TRYCATCH 塊中丟擲異常
你可以在 try catch 塊中丟擲異常:
DECLARE @msg nvarchar(50) = 'Here is a problem!'
BEGIN TRY
print 'First statement';
THROW 51000, @msg, 15;
print 'Second statement';
END TRY
BEGIN CATCH
print 'Error: ' + ERROR_MESSAGE();
THROW;
END CATCH
在 CATCH 塊中處理異常,然後使用不帶引數的 THROW 重新丟擲異常。
First statement
Error: Here is a problem!
Msg 51000, Level 16, State 15, Line 39
Here is a problem!
THROW 與 RAISERROR 類似,但有以下不同之處:
- 建議新應用程式應使用 THROW 而不是 RASIERROR。
- THROW 可以使用任何數字作為第一個引數(錯誤號),RAISERROR 只能在 sys.messages 檢視中使用 id
- THROW 的嚴重程度為 16(不能更改)
- THROW 無法格式化 RAISERROR 之類的引數。如果需要此功能,請使用 FORMATMESSAGE 函式作為 RAISERROR 的引數。