2009-08-17 24 views
1

我很困惑。是否創建自定義異常或.Net基類庫有相關異常?是否創建自定義異常或等待發生NullReferenceException行嗎?

我打電話給某種服務或框架API,它返回一個空引用,這是我的層的特例。我知道系統將無法繼續使用空引用,如果我繼續,我應該得到一個NullReferenceException。

那麼,我應該在那一刻創建一個自定義異常,還是應該等待發生NullPointerReference?

見下



Organization organization = OrganizationService.GetOrganizationById("123"); 
this.SetOrders(organization.Id); // This will give me NullReferenceException 

的代碼片段,請指導我。

感謝和問候

123Developer

回答

3

在一般情況下,它很好的做法,儘快趕上錯誤,以最佳方式處理這些可能的 - 通過使用默認值來解決該錯誤,或通知用戶你不能繼續。

因此,在這個特定的情況下,如果我理解正確,我會測試變量爲null,如果它的null不會繼續 - 優雅地退出。

1

我經常設計一個DataNotFoundException,當基於對象ID的get操作失敗時會拋出異常。我這樣做的基本原理是ID通常不是由用戶輸入的,而是僅用於代碼中,所以如果使用不存在的ID執行搜索,則輸入是不好的,我想以清楚的方式發信號。

2

NullPointerReference異常總是很難調試,應儘可能避免異常。在某些情況下,如果「null」值是傳遞的參數之一,則可以使用ArgumentNullException。不過在這種情況下,我會推薦一個自定義異常。

2

拋出一個InvalidOperationException如果它與傳遞給您的方法的任何參數無關,或者返回ArgumentException。儘快合理地做到這一點,以避免意外地破壞你的狀態。

除了其他任何東西,這可以讓你給一個更有用的信息,指出什麼找不到。

2

作爲一般規則,如果您可以爲異常本身添加含義,則只應該捕獲異常。

你的具體情況,我建議你檢查值null,並拋出自己一個適當的異常(可能是InvalidOperationException與「未找到組織」的消息?)

相關問題