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