ASP.MVC中的例外情况

时间:2010-05-26 02:56:49

标签: asp.net-mvc database exception

我再次提到另一个关于MVC的问题。

这是合约。我有一个简单的表/类,带有Id和Name。名称被设为唯一,并且在数据库中建模。

我创建了我的控制器,一切正常。但是,如果我尝试插入已存在的名称,则应抛出异常。我只是找不到正确的异常和它的命名空间。错误必须来自数据库,所以......

有什么想法吗?

由于

1 个答案:

答案 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!
    }
}