代码之家  ›  专栏  ›  技术社区  ›  Jules

如何捕获.NET程序集中所有未处理的异常(库类型,而不是应用程序)

  •  3
  • Jules  · 技术社区  · 14 年前

    我有一个包含许多类的程序集。这是类库类型程序集,而不是Windows窗体应用程序。它也是单线程的。

    是否有方法捕获所有未处理的异常以便我记录它们?

    2 回复  |  直到 14 年前
        1
  •  3
  •   SergGr    14 年前

    在我看来,把这样的逻辑放进图书馆不是一个好主意。我认为应该由应用程序负责决定如何处理异常(处理和未处理)。不管你怎么看 AppDomain.UnhandledException . 您可以为当前域安装这样的处理程序并在其中执行一些操作。但是这样做会限制库的使用(例如,意味着库将只在一个域中使用)。此外,您将收到所有未处理的异常的通知,甚至完全与程序集无关。

    我认为更好的方法是允许使用库的开发人员处理所有未处理的异常(可能是应用程序安装的未处理异常)。

        2
  •  2
  •   Alex F    14 年前

    可以使用AppDomain.UnhandledException事件全局捕获未处理的异常:

    http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

    或者对每个程序集调用使用try/catch。