0

我正在尝试访问导致 UnhandledException 的原始异常,但我看到的只是 UnhandledExceptionEventArgs.Message 属性中包含的文本;

例如:

  • 我有带有点击处理程序的按钮视图:
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     throw new NullReferenceException("Test exc");
 }
  • 在 App 构造函数中,我订阅了 UnhandledException 异常
 this.UnhandledException += App_UnhandledException;

 private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
 {
     Debug.WriteLine(e.Message);
     Debug.WriteLine(e.Exception.ToString()); 
 }
  • 结果,我没有选择获取原始异常文本“Test exc”。我只有

Message = System.NullReferenceException at W8.Controls.SearchControl.Button_Click_1(对象发送者,RoutedEventArgs e)

异常 = System.NullReferenceException:对象引用未设置为对象的实例。

提前感谢您的建议!

4

1 回答 1

0

传播到 UnhandledException 的内容有一些限制。据记载

另一个限制是 UnhandledException 事件参数不包含与原始异常一样多的详细信息。只要有可能,如果应用程序需要对某个异常进行特定处理,最好在异常传播时捕获它,因为可以获得更多详细信息。UnhandledException 事件参数通过 Exception 属性公开一个异常对象。但是,不能保证此异常对象的类型、消息和堆栈跟踪与引发的原始异常相匹配。事件参数还公开了 Message 属性。在大多数情况下,这将包含最初引发的异常的消息。

于 2012-11-22T00:17:23.037 回答