2011-06-29 54 views
1

我正在使用企業庫的DAAB訪問數據庫,這兩個數據庫均使用ExecuteReaderExecuteNonQuery。問題是,這些方法沒有記錄異常...然後,我怎麼知道應該捕獲哪些異常?企業庫中未記錄的例外

+0

我只是好奇你爲什麼認爲你需要抓住每一個可能的例外?拋出的特定異常將取決於您的數據庫提供者,因爲大多數錯誤可能是數據庫或網絡(連接等)異常。此外,大多數例外情況都是系統例外,我認爲除了日誌記錄之外,您可以做很多事情,並可能讓用戶知道發生了錯誤。 –

回答

1

問題在於,有許多例外情況會在比企業庫低的級別拋出,而且EL不可能將所有這些情況記錄下來。

我建議你使用異常處理和記錄塊來捕獲和記錄所有異常。然後您可以查看哪些發生了,並調整異常處理程序的配置或添加新代碼來處理特定的執行選項。

+0

問題是我已經捕獲並「手動」處理了很多不同的異常......我能否將它們調整到新的處理塊? – User

+0

是的,儘管當我從手動異常處理切換到最終掌握企業庫時,我發現我的massivley減少了所需的異常處理代碼的數量,並且還對代碼中引發的異常有了更好的覆蓋。 –

2

我WebTurner同意,我猜一個良好的開端將是你連接到數據庫,所以如果我猜一對夫婦的MS SQL數據庫(也許很多)的例外是:

  • SQLEXCEPTION
  • 出現InvalidOperationException

http://msdn.microsoft.com/en-us/library/9kcbe65k.aspx


編輯:

我只是碰到這種傳來:How can I determine which exceptions can be thrown by a given method?

它看起來liek它使用反射來幫助發現被拋出的異常的列表。

+0

實際上,您所做的是找出哪些異常將由一個較低級別的操作和服務器類型返回。這不是一個糟糕的開始,但是您需要檢查EL中的整個實現以找出引發的異常。 –

+0

完全同意@webturner,謝謝你的增加的細節。這只是一個開始,但肯定不是徹底的。 –