gpt4 book ai didi

c# - 您应该如何诊断错误 SEHException - 外部组件抛出异常

转载 作者:IT王子 更新时间:2023-10-29 03:40:23 31 4
gpt4 key购买 nike

每当用户报告诸如

之类的错误时

System.Runtime.InteropServices.SEHException - External component has thrown an exception?

作为程序员,我能做些什么来确定原因吗?

场景:一位用户(使用我公司编写的程序)报告了此错误。这可能是也可能不是一次性错误。他们提到,在上个月,电脑有两次“停止工作”。我从经验中学到,不要过于字面地理解这个描述,因为它通常意味着与计算机相关的人没有按预期工作。他们无法提供更多详细信息,我也找不到任何记录的错误。因此,它可能是也可能不是这个错误。

从堆栈跟踪来看,实际的错误是在构建一个不直接调用任何互操作代码的类时,但由于对象可能是数据绑定(bind)到 DevExpress Grid 的列表的一部分这一事实可能会变得复杂。

错误被未处理的异常例程“捕获”,该例程通常会关闭程序,但可以选择忽略并继续。如果他们选择忽略该错误,则程序会继续运行,但在下次运行此例程时会再次出现错误。但是,在关闭并重新启动我们的应用程序后,它并没有再次发生。

有问题的计算机似乎没有压力。它运行 Vista Business,有 2GB 内存,根据任务管理器,我们的应用程序仅使用了大约一半的内存,只有大约 200Mb。

还有一条信息可能相关也可能不相关。同一程序的另一部分使用第三方组件,它实际上是围绕 native dll 的 dotnet 包装器,并且该组件确实有一个已知问题,您偶尔会得到一个

Attempted to read or write protected memory. This is often an indication that other memory is corrupt

组件制造商表示,这已在我们内部使用的最新版本的组件中修复,但尚未提供给客户。

考虑到错误的后果很低(没有工作丢失,重新启动程序并返回到原来的位置最多只需要一分钟)并且考虑到客户很快就会得到一个新版本(与更新的第三方组件),我显然可以祈祷并希望错误不会再次发生。

但是我还能做些什么吗?

最佳答案

是的。此错误是未映射到 .NET 错误的结构化异常。可能是您的 DataGrid 映射引发了未捕获的 native 异常。

您可以通过查看 ExternalException.ErrorCode 判断发生了什么异常属性(property)。我会检查您的堆栈跟踪,如果它与 DevExpress 网格相关联,请向他们报告问题。

关于c# - 您应该如何诊断错误 SEHException - 外部组件抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313853/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com