【发布时间】:2010-11-21 18:44:18
【问题描述】:
每当用户报告诸如
之类的错误时System.Runtime.InteropServices.SEHException - 外部组件抛出异常?
作为程序员,我可以做些什么来确定原因吗?
场景:一位用户(使用我公司编写的程序)报告了此错误。 这可能是也可能不是一次性错误。他们提到,在上个月,计算机已经两次“停止工作”。我从经验中吸取了教训,不要太从字面上理解这个描述,因为这通常意味着与计算机相关的人没有按预期工作。他们无法给我更多细节,我也找不到任何记录的错误。因此,它可能是也可能不是这个错误。
从堆栈跟踪来看,实际错误是在构造一个不直接调用任何互操作代码的类时,但可能由于对象可能是数据绑定到 DevExpress 网格的列表的一部分而变得复杂。
错误被未处理的异常例程“捕获”,该例程通常会关闭程序,但可以选择忽略并继续。如果他们选择忽略该错误,则程序继续工作,但在下次运行此例程时再次出现错误。但是,在关闭并重新启动我们的应用程序后,它并没有再次发生。
有问题的计算机似乎没有压力过大。它运行 Vista Business,有 2GB 内存,根据任务管理器只使用大约一半的内存,而我们的应用程序只有大约 200Mb。
还有另一条信息可能相关,也可能不相关。同一程序的另一部分使用第三方组件,该组件实际上是原生 dll 周围的 dotnet 包装器,并且该组件确实存在一个已知问题,在这种情况下,您偶尔会得到一个
试图读取或写入受保护的内存。这通常表明其他内存已损坏
组件制造商表示,我们内部使用的最新版本的组件已修复此问题,但尚未提供给客户。
鉴于错误的后果很小(没有工作丢失,重新启动程序并回到原来的位置最多只需要一分钟),并且客户很快就会得到一个新版本(带有更新了第三方组件),我显然可以祈祷,希望错误不会再次发生。
但是我还能做些什么吗?
【问题讨论】:
标签: c# winforms .net-2.0 error-logging