2012-07-17 39 views
2

我有一個獨立的應用程序在將平面文件導入到SQL數據庫之前進行數據檢查。使用現有的框架ConstraintException違反數據約束條件

在這樣的背景下,拋出System.Data.ConstraintException是否合理? (該例子是人爲的。)

if(_keys.ContainsKey(key)) 
{ 
    throw new ConstraintException(string.Format("Uniqueness violated! " + 
     "This unique combination of '{0}' already found on line {1}", 
     GetUniquenessColumnList(), _keys[key])); 
} 

ConstraintException's documentation指出它「表示試圖違反的約束的動作時所引發的異常。」

以這種方式使用內置異常有問題嗎?有更好的使用方法嗎?我應該建立自己的,儘管這種例外似乎是根據我的情況量身定做的?

回答

3

我想你已經回答了你自己的問題

...我的處境此異常好像是專門做?

爲什麼要重新發明輪子?

編輯:

看看這個MSDN文章:Choosing the Right Type of Exception to Throw

考慮拋駐留在系統 命名空間,而不是創建自定義的異常類型的現有例外。

...

不要創建並拋出新的例外正好有你的團隊的異常。

2

不,這樣做沒有問題。如果已經存在合適的異常,則不需要創建新的異常。

+0

同意,但獲得一個新的(自定義)類(也許暴露了一些額外的屬性有關異常的更多詳細信息,如ViolatedKey)也是一個(好,也許第二?)選項。例如,這將使得「提取」「違反的鍵(值)」更容易,因爲您不必依賴從實際消息(字符串)中獲取它。在考慮這個選項時,請確保你保持[YAGNI](http://en.wikipedia.org/wiki/You_ain't_gonna_need_it)在你的頭腦後面。 – RobIII 2012-07-17 23:25:14