這是基本的編程問題,而不是特定的SQL Server問題。我想知道錯誤處理的基本原則是什麼?發生錯誤時,代碼是否總是會拋出異常?如果異常總是終止程序或批處理?錯誤處理的基本原則?
回答
處理錯誤的方式通常取決於上下文。您可能會遇到某些錯誤。這種情況的一個例子可能像是違反密鑰的情況。在這種情況下,您可能只希望記錄該錯誤(可能會將其記錄爲信息而不是正確的錯誤),並向用戶界面返回用戶友好的消息,以通知用戶發生了問題。其他錯誤是意外的。這些應該很可能還會被記錄下來並向用戶報告,並有可能採取進一步的步驟以將異常追蹤發送給開發團隊(即通過電子郵件等)。
當今許多現代編程語言都具有結構化異常處理功能,這使得陷印和日誌記錄異常非常簡單。還有一些日誌框架來幫助記錄。 .Net領域的良好日誌記錄框架包括log4net,nLog和elmah。網絡上的所有這些日誌框架都應該有大量的例子。
就SQL Server而言,錯誤處理能力並不那麼先進。
處理錯誤在存儲過程中常見的模式會是這樣的
create procedure [dbo].[test_dosomework]
(
@param1 int,
@param2 varchar(10)
)
as
begin
declare @errorCode int
select @errorCode = 0
insert table1 (aValue)
values (@param1)
select @errorCode = @@ERROR
if @errorCode = 0
begin
insert table1 (aValue2)
values (@param2)
select @errorCode = @@ERROR
end
return @errorCode
end
在這種情況下,如果發生錯誤,無論是在插入語句的@ERROR將返回錯誤編號,@errorCode會被設置爲這個錯誤號,並且存儲過程的返回值將是錯誤號的返回值。
如果您使用SQL 2005或2008,則應在每個語句後使用新的錯誤處理結構TRY/CATCH
而不是檢查@@error
。這是SQL 2000的做事方式,閱讀和管理起來要困難得多。
您不必像以前討論的那樣捕獲每個錯誤,因爲批次不會因某些錯誤而終止,但如果您想確保幾乎任何事情都中止事務,則應在您的開始時使用SET XACT_ABORT ON
批量。
在線Erland Sommerskog查看任何涉及錯誤處理的內容。他是一位着名的SQL Server MVP,具有錯誤處理功能。
中,我將不得不嘗試使用SQL Server 2008,但尚未在憤怒中使用任何新功能。 – Andrew 2011-03-23 20:03:35
- 1. Python基本錯誤處理
- 2. AngularJS:基本錯誤處理
- 3. Ajax數據處理的基本原理
- 4. VS 2015中的基本錯誤處理
- 5. 關於XAML好處的基本原理
- 6. 基本的Java錯誤處理加變量錯誤
- 7. 基本處理
- 8. 如何理解這個makefile規則的基本原理?
- 9. React原生WebView加載錯誤處理
- 10. Shell腳本錯誤處理
- 11. 錯誤處理 - PowerShell腳本
- 12. PowerShell:錯誤處理腳本
- 13. Java文件處理。基本。文本輸出錯誤
- 14. 如何處理基本MySQL存儲過程中的錯誤?
- 15. 基於文本的批處理遊戲演示,編碼錯誤
- 16. Swift Classes基本D.R.Y原理
- 17. 多處理Python核心基礎錯誤
- 18. IO錯誤處理上Sockjs基旋風
- 19. Zend Framework模塊基於錯誤處理
- 20. MISRA中的評論規則的基本原理
- 21. 腳本管理器4.5處理錯誤
- 22. Bash在執行腳本時忽略錯誤的基本原理是什麼?
- 23. 錯誤#2044:未處理的IOErrorEvent :.文本=錯誤#2032:流錯誤
- 24. angularjs錯誤的原理
- 25. Oracle腳本中的錯誤處理
- 26. Bash腳本中的Oracle錯誤處理
- 27. 未知的批處理腳本錯誤
- 28. 批處理腳本的語法錯誤
- 29. 對bash腳本的錯誤處理
- 30. 處理錯誤
您是否在談論與數據庫通信的錯誤?或者只是任何一種錯誤? – 2011-03-23 18:49:49
在數據庫上下文 – juur 2011-03-23 18:53:35