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