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

本文关键字:异常 特别是 实体 框架 有可能 何找出 | 更新日期: 2023-09-27 18:31:08

我认为

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

现在,我通常只会遵循 MSDN 文档的建议以及所需异常的适当尝试/捕获逻辑。示例如下 SaveChanges():

http://msdn.microsoft.com/en-us/library/bb336792.aspx

现在我提出这个问题,因为阅读上面的链接,列出了一个异常,称为OptimisticConcurrencyException,这很好。现在阅读他们给出的示例,还有另一个列出的UpdateException。现在我希望它列在例外标题中。

所以回到最初的问题,"我如何知道可以从对象或其方法引发的所有异常"?

谢谢大家。

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

不幸的是,

我不相信你能做到。 但是,如果您查看OptimisticConcurrencyException的继承结构,它将继承自:

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

如果你抓住了System.Data.DataException它应该抓住两个,而不必做一个包罗万象。

我认为

,当你指出乐观并发异常时,只有一个例外。如果你仔细查看代码,那么你会注意到 SaveChanges() 只抛出这个异常。

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

ObjectQuery<SalesOrderHeader> orders =
            context.SalesOrderHeaders.Where(
            "it.CreditCardApprovalCode IS NULL").Top("100");

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