使用现有的框架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
考虑抛驻留在系统 命名空间,而不是创建自定义的异常类型的现有例外。
...
不要创建并抛出新的例外正好有你的团队的异常。
答
不,这样做没有问题。如果已经存在合适的异常,则不需要创建新的异常。
同意,但获得一个新的(自定义)类(也许暴露了一些额外的属性有关异常的更多详细信息,如ViolatedKey)也是一个(好,也许第二?)选项。例如,这将使得“提取”“违反的键(值)”更容易,因为您不必依赖从实际消息(字符串)中获取它。在考虑这个选项时,请确保你保持[YAGNI](http://en.wikipedia.org/wiki/You_ain't_gonna_need_it)在你的头脑后面。 – RobIII 2012-07-17 23:25:14