Asp.net mvc ASP.MVC中的异常
我在这里再次提出关于MVC的另一个问题 这是交易。我有一个带有Id和名称的简单表/类。名称被支持为唯一的,并且建模方式与数据库中的相同 我创建了控制器,一切正常。但如果我试图插入一个已经存在的名称,则应该抛出一个异常。我只是没有找到正确的异常类型和名称空间。错误一定来自数据库,所以 有什么想法吗Asp.net mvc ASP.MVC中的异常,asp.net-mvc,database,exception,Asp.net Mvc,Database,Exception,我在这里再次提出关于MVC的另一个问题 这是交易。我有一个带有Id和名称的简单表/类。名称被支持为唯一的,并且建模方式与数据库中的相同 我创建了控制器,一切正常。但如果我试图插入一个已经存在的名称,则应该抛出一个异常。我只是没有找到正确的异常类型和名称空间。错误一定来自数据库,所以 有什么想法吗 谢谢请声明您自己的异常类 public class DuplicateNameException : Exception {} 您可能希望添加一些构造函数以确保消息得到适当设置,但不需要比这更困难 在
谢谢请声明您自己的异常类
public class DuplicateNameException : Exception {}
您可能希望添加一些构造函数以确保消息得到适当设置,但不需要比这更困难
在OP澄清后更新:因此DB抛出异常,您只想让问题更明显。在本例中,我建议您将DB异常保留为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!
}
}
你说“我只是没有找到正确的异常类型和名称空间”是什么意思?我不想抛出一个带有消息的通用异常:“有一个数据库错误”。我想抛出一个特定的异常,比如…“违反了唯一键-名称应该是唯一的”。当然我可以这样做,但是MVC有没有办法事先确定数据库生成了哪个错误?Thanks@George,我不太清楚你的问题。这是一个数据库层已经抛出的异常,您希望为其提供更好的消息,还是希望抛出的新异常?Hello JS。数据库层已经抛出了我的异常。我管理它的方法是查找特定的数据库错误号并添加特定的消息。这不是最漂亮的方式,但它很有效。有什么想法吗?