c# - 从 WinForms 中的 Invoked 方法中抛出的异常中获取外部异常的任何解决方法?
问题描述
Control.Invoke
在 Windows 窗体中,当对or的调用引发异常Control.BeginInvoke
并且它未被任何 catch 块处理时,它可以由控件或应用程序级别的处理程序通过 Windows.Forms.Application.ThreadException
事件来处理。它的处理程序EventArgs
带有一个属性Exception
,这是抛出的异常。但是,在幕后,Windows.Forms.Control(不受欢迎)根据这个答案剥离了除了最内部的例外之外的所有内容。
也找到了这篇博客文章,但它没有建议任何解决方法。
(这目前导致我在我的错误日志中得到一个微不足道的堆栈跟踪——一个告诉我最里面的细节的堆栈跟踪,但是没有提到调用代码,也没有办法找出这种错误的代码位置。 )
有解决方法吗? 有没有办法在我的应用程序事件处理程序中获取所有外部异常(正在记录意外异常以进行故障排除)?
我发现的唯一建议似乎是在调用的代码中捕获异常并将其一些信息填充到Exception.Data
中,也许是在一个新的异常中 - 但如果我知道导致异常的外部代码,我可以修复错误而不是记录它。相反,如果不围绕每个候选代码块包装一个 try-catch,我怎么能在全局范围内做到这一点?
解决方案
推荐阅读
- php - 如何在array_map之后删除数组的数字键
- c# - 如何在不覆盖以前数据的情况下将数据添加到 XML 文件(C#)
- tensorflow - VGG 模型到 tflite 输出的问题
- abap - 向 CL_GUI_SPLITTER_CONTAINER 添加多个控件?
- python - 带有熊猫的 Python 中的 JSON 到 CSV
- javascript - 在数组中查找对象并返回对象
- c++ - C++/WinRT:将关键字放在运行时类实现上是否有意义?
- python - Flask- Heroku 应用程序错误 - 没有运行 Web 进程
- c++ - 使用 fstream 不会写入结果
- spring-boot - Milo ExtensionObject 到 CustomClass