我再次提到另一个关于MVC的问题。
这是合约。我有一个简单的表/类,带有Id和Name。名称被设为唯一,并且在数据库中建模。
我创建了我的控制器,一切正常。但是,如果我尝试插入已存在的名称,则应抛出异常。我只是找不到正确的异常和它的命名空间。错误必须来自数据库,所以......
有什么想法吗?
由于
答案 0 :(得分:2)
只需声明自己的异常类。
public class DuplicateNameException : Exception {}
您可能希望添加一些构造函数以确保消息得到适当设置,但它不需要比这更难。
从OP 澄清后更新:因此数据库抛出异常,您只是想让问题更明显。在这种情况下,我建议您将数据库异常保持为InnerException
,并重新抛出更好的东西。因此,将DuplicateNameException
声明为:
public class DuplicateNameException : Exception
{
public DuplicateNameException(DBException ex)
: base("Duplicate name!", ex)
{}
}
然后你需要做DB操作:
try
{
DoDatabaseOperation();
}
catch (DBException ex)
{
if (IsDuplicateNameException(ex))
{
throw new DuplicateNameException(ex);
}
else
{
throw; // use the no-argument form of "throw" to ensure you don't break the stack trace!
}
}