c# - 如何确定异常是否属于特定类型

标签 c# asp.net-mvc exception-handling

我有一段try catch代码:

try 
{
    ...
}
catch(Exception ex) 
{
    ModelState.AddModelError(
        "duplicateInvoiceNumberOrganisation", "The combination of organisation and invoice number must be unique");
}

对于这段代码,我试图将一条记录插入数据库:dba 已对其进行设置,以便数据库检查重复项并在有重复项时返回错误。目前,如您所见,无论发生什么错误,我都会向模型添加相同的错误。我希望更改它,以便仅当此错误是由 dba 设置的重复错误引起时才将其添加到模型中。

下面是我要捕获的错误。请注意它在内部异常中。谁能告诉我具体怎么抓这个?

enter image description here

最佳答案

您当前的捕获物之前添加以下内容:

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/

相关文章:

asp.net - 没有 Controller 的 MvcSiteMapNode

java - 迭代的MapReduce作业具有NumberFormatException错误

c# - 带参数的本地化错误消息

ruby-on-rails - 是否有可以跟踪独特错误的 Rails 库?

c# - 如何为 HTTP 基本身份验证配置 app.config?

c# - ASP .NET - 从选定的 Listview 控件行检索值?

c# - 解决在上下文中找不到owin.Environment项目

c# - 找不到 JobRunShell.cs

c# - 如何将 C# 泛型类型传递给另一个类

c# - 使用 SimpleMembership MVC 4 创建默认角色和用户 - 代码优先方法