asp.net-mvc - ASP.MVC 中的异常

标签 asp.net-mvc database exception

我又来了,还有一个关于 MVC 的问题。

这是交易。我有一个带有 ID 和名称的简单表/类。名称应该是唯一的,并且像数据库中的那样建模。

我创建了我的 Controller ,一切正常。但是如果我尝试插入一个已经存在的名字,就会抛出一个异常。我只是没有找到正确的异常类型及其 namespace 。错误必须来自数据库,所以...

有什么想法吗?

谢谢

最佳答案

只需声明您自己的异常类即可。

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

关于asp.net-mvc - ASP.MVC 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909857/

相关文章:

c# - 将 int 转换为 dropdownlistfor 的字符串

asp.net-mvc - 不要验证 MVC 上的日期字段

database - 具有递归性能的 PostgreSQL

javascript - 如何将 sql server 连接到我的 Javascript 游戏?

javascript - 将 'unhandled' 网络 worker 异常标记为已处理

c++ - 关于异常规范和应用程序设计的问题

c# - 轻量级 .NET Web 开发?

asp.net-mvc - Visual Studio 无法解析模型,但可以加载 Razor 页面

mysql - 如何统计从指定行开始的行数?

java - 链接异常,捕获异常并抛出新异常