假設我想告訴應用程序發生了什麼/返回了SQL服務器。我們有這樣的代碼塊:SQL嘗試catch目的不清楚
BEGIN TRY
-- Generate divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
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;
GO
,並讓我們有這樣的代碼塊:
SELECT 1/0;
我的問題是: 兩個零錯誤返回分工。我不明白的是,爲什麼當我在兩種情況下都遇到錯誤時,我應該用try catch clausule來包圍它? 是不是這個錯誤會在兩種情況下傳播到客戶端應用程序?
好的,你已經非常清楚地解釋了..另一個問題:爲什麼你更喜歡在DAL中完成所有這些'捕捉函數'? – 2010-06-10 14:59:35
,因爲通常這些類型的事件(記錄錯誤,儀表,追蹤,操作人員的某些問題的通知等)被稱爲「交叉問題」,可能發生在任何系統模塊中,而不僅僅是數據庫..因此,從整體系統的角度來看,將這種功能置於可從系統中的任何地方訪問的代碼模塊中,而不僅僅是從數據庫中更有意義... – 2010-06-10 15:11:25
如果我想要某個方面導致記錄被保存在數據庫中,我會將該模塊的代碼寫回數據庫作爲它的一個任務... – 2010-06-10 15:12:19