使用现有的框架ConstraintException违反数据约束条件

问题描述:

我有一个独立的应用程序在将平面文件导入到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指出它“表示试图违反的约束的动作时所引发的异常。”

以这种方式使用内置异常有问题吗?有更好的使用方法吗?我应该建立自己的,尽管这种例外似乎是根据我的情况量身定做的?

我想你已经回答了你自己的问题

...我的处境此异常好像是专门做?

为什么要重新发明*?

编辑:

看看这个MSDN文章:Choosing the Right Type of Exception to Throw

考虑抛驻留在系统 命名空间,而不是创建自定义的异常类型的现有例外。

...

不要创建并抛出新的例外正好有你的团队的异常。

不,这样做没有问题。如果已经存在合适的异常,则不需要创建新的异常。

+0

同意,但获得一个新的(自定义)类(也许暴露了一些额外的属性有关异常的更多详细信息,如ViolatedKey)也是一个(好,也许第二?)选项。例如,这将使得“提取”“违反的键(值)”更容易,因为您不必依赖从实际消息(字符串)中获取它。在考虑这个选项时,请确保你保持[YAGNI](http://en.wikipedia.org/wiki/You_ain't_gonna_need_it)在你的头脑后面。 – RobIII 2012-07-17 23:25:14