首页 > 解决方案 > 从 WinForms 中的 Invoked 方法中抛出的异常中获取外部异常的任何解决方法?

问题描述

Control.Invoke在 Windows 窗体中,当对or的调用引发异常Control.BeginInvoke并且它未被任何 catch 块处理时,它可以由控件或应用程序级别的处理程序通过 Windows.Forms.Application.ThreadException事件来处理。它的处理程序EventArgs带有一个属性Exception,这是抛出的异常。但是,在幕后,Windows.Forms.Control(不受欢迎)根据这个答案剥离了除了最内部的例外之外的所有内容。

也找到了这篇博客文章,但它没有建议任何解决方法。

(这目前导致我在我的错误日志中得到一个微不足道的堆栈跟踪——一个告诉我最里面的细节的堆栈跟踪,但是没有提到调用代码,也没有办法找出这种错误的代码位置。 )

有解决方法吗? 有没有办法在我的应用程序事件处理程序中获取所有外部异常(正在记录意外异常以进行故障排除)?

我发现的唯一建议似乎是在调用的代码中捕获异常并将其一些信息填充到Exception.Data中,也许是在一个新的异常中 - 但如果我知道导致异常的外部代码,我可以修复错误而不是记录它。相反,如果不围绕每个候选代码块包装一个 try-catch,我怎么能在全局范围内做到这一点?

标签: c#.netwinformsexception

解决方案


推荐阅读