簡體   English   中英

如何查找SQL Server執行存儲過程時嘗試捕獲的異常類型

[英]How to find what type of exception occur from SQL Server Try Catch while executing stored procedure

我正在執行其中包含一些代碼的存儲過程,並將其放入try catch塊中,例如

BEGIN Transaction Tran1  
BEGIN Try
    //Stored procedure code
COMMIT TRANSACTION  Tran1   
END Try

BEGIN Catch
ROLLBACK TRANSACTION Tran1 
    raiserror('Cannot commit transaction', 16, 1, @@error);
    return;
END Catch

當發生任何錯誤時,它會轉到Catch塊並引發錯誤(這是用戶定義的錯誤),但不會引發實際發生的錯誤類型。 因此,當從前端執行該錯誤時,如何像在C#中那樣真正發生什么類型的錯誤?

Try  
{  
  //Some code  
}  
Catch(Exception ex)  
{  
  MessageBox.Show(ex.message);  
}

請為此提供解決方案

引發的錯誤是開捕為SqlException

例如

catch (SqlException sqlEx)
{
   if (sqlEx.Number == 50000)
   {
      // 
   }
}

您可以使用RAISERRORmsg_id在SQL中自定義數字,或者更好的是,使用THROW

你可以試試

BEGIN Transaction Tran1  
BEGIN Try
   //Stored procedure code
COMMIT TRANSACTION  Tran1   
END Try

BEGIN Catch
ROLLBACK TRANSACTION Tran1      
   SELECT 
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;   

      END CATCH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM