我有一段try catch代码:
try
{
...
}
catch(Exception ex)
{
ModelState.AddModelError(
"duplicateInvoiceNumberOrganisation", "The combination of organisation and invoice number must be unique");
}
对于这段代码,我试图将一条记录插入数据库:dba 已对其进行设置,以便数据库检查重复项并在有重复项时返回错误。目前,如您所见,无论发生什么错误,我都会向模型添加相同的错误。我希望更改它,以便仅当此错误是由 dba 设置的重复错误引起时才将其添加到模型中。
下面是我要捕获的错误。请注意它在内部异常中。谁能告诉我具体怎么抓这个?
最佳答案
在您当前的捕获物之前添加以下内容:
catch(DbUpdateException ex)
{
if(ex.InnerException is UpdateException)
{
// do what you want with ex.InnerException...
}
}
从 C# 6 开始,您可以执行以下操作:
catch(DbUpdateException ex) when (ex.InnerException is UpdateException)
{
// do what you want with ex.InnerException...
}
关于c# - 如何确定异常是否属于特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270023/