如何将全局异常处理添加到加载项DLL?

时间:2010-01-11 07:18:06

标签: .net wpf exception-handling error-handling wpf-controls

这是我的背景:

  • 我正在为应用程序编写WPF加载项。
  • 此应用程序的主要线程未受管理。
  • 我想为此加载项添加一个全局异常处理系统来处理任何未处理的异常。

这是我尝试但不工作的内容:

  • 我无法在我的Application.Run()代码行中添加try-catch块。因为我是一个加载项,所以该代码片段在应用程序中。
  • System.Windows.Forms.Application.ThreadException也不起作用。可能没有WinForm应用程序存在。 (WPF托管在非托管代码中。)
  • AppDomain.CurrentDomain.UnhandledException也不起作用。因为它可能是由应用程序本身处理的。它只是没有输入我的代码。

那么,对于这种情况的任何想法?

2 个答案:

答案 0 :(得分:0)

你不应该触及全局异常处理,即使你可以,你正在编写一个加载项并挂钩到全局异常处理不仅会改变你的加载项的行为,还会改变主应用程序和所有其他的加载 - 在系统中 - 做一些可能会将错误引入其他加载项的东西并不是一个好邻居: - )

现在,您可以使用try-catch块将每个外部可调用方法包装在您的加载项中,这显然是不可维护的,但像PostSharp这样的AOP系统可以轻松地为您添加这些方法,同时保持处理代码在不错的中心位置。

答案 1 :(得分:-1)

 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);