C# 如何找出所有可能抛出的异常(特别是实体框架)

C# 如何找出所有可能抛出的异常(特别是实体框架),c#,entity-framework,exception-handling,C#,Entity Framework,Exception Handling,我认为这确实是一个常见的C#问题,但我在尝试使用ObjectContext持久化数据时处理实体框架时,特别是SaveChanges() 现在,我通常只会遵循MSDN文档的建议,并针对所需的异常使用适当的try/catch逻辑。SaveChanges()的示例如下: 现在我提出这个问题是因为阅读上面的链接,这里列出了一个例外,叫做OptimisticConcurrencyException,这很好。现在阅读他们给出的示例,其中列出了另一个UpdateException。现在,我希望这会列在例外标

我认为这确实是一个常见的C#问题,但我在尝试使用ObjectContext持久化数据时处理实体框架时,特别是SaveChanges()

现在,我通常只会遵循MSDN文档的建议,并针对所需的异常使用适当的try/catch逻辑。SaveChanges()的示例如下:

现在我提出这个问题是因为阅读上面的链接,这里列出了一个例外,叫做OptimisticConcurrencyException,这很好。现在阅读他们给出的示例,其中列出了另一个UpdateException。现在,我希望这会列在例外标题中

那么回到最初的问题,“如何知道可以从对象或其方法抛出的所有异常”


谢谢大家。

我想只有一个例外,正如您指出的乐观并发例外。如果仔细查看代码,则可以注意到SaveChanges()仅抛出此异常

UpdateException不是用于SaveChanges(),而是用于

ObjectQuery订单=
context.SalesOrderHeaders.Where(
“it.CreditCardApprovalCode为空”).Top(“100”);

或者该示例中的其他代码行。

不幸的是,我不相信您可以。但是,如果查看它的继承结构,它继承自:

System.Object
  System.Exception
    System.SystemException
      System.Data.DataException
        System.Data.UpdateException
          System.Data.OptimisticConcurrencyException

如果你捕获了
System.Data.DataException
它应该捕获这两个,而不必进行全面捕获。

你可以查看该方法的源代码以及它调用的每个方法(这不在全面捕获块中)。你是对的,谢谢伙计的关注,疲惫的眼睛:(谢谢Matthew!:)我会尝试一下。再次感谢。
System.Object
  System.Exception
    System.SystemException
      System.Data.DataException
        System.Data.UpdateException
          System.Data.OptimisticConcurrencyException