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

时间:2010-04-14 12:45:51

标签: .net vb.net exception-handling c#-3.0

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

有没有办法捕获所有未处理的异常,以便我可以记录它们?

2 个答案:

答案 0 :(得分:3)

在我看来,将这样的逻辑放在库中并不是一个好主意。我认为决定如何处理异常(处理和未处理)应该是应用程序责任。但是你可能会看AppDomain.UnhandledException。您可以为CurrentDomain安装此类处理程序并在那里执行某些操作。但是,通过这种方式,您可以限制库的使用(例如,暗示该库仅在一个域中使用)。此外,您将收到所有未处理异常的通知,甚至与您的程序集完全无关。

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

答案 1 :(得分:2)

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

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

或者为每个组装电话使用try / catch。