我遇到一个奇怪的问题,我的.net c#4.0加载项(一个相对简单的加载项,包含大量的互操作和一个customtaskpane)导致单词崩溃:
如果加载项运行时间较长(> 5分钟),有时会突然出现“对话框不再有效”的窗口对话框。几秒钟后,广告错误对话框打开,我瞥见它显示SEHException。但是当Windows立即重新启动Word时,我无法仔细查看异常。调试器没有帮助,因为它没有破坏。
知道导致SEHException的原因以及我可以研究的内容吗? Word / VSTO的具体建议是理想的,但也欢迎有关避免和调查SEHExceptions的一般性建议。
由于 chabun
答案 0 :(得分:0)
获得此异常的一种方法是,如果非托管代码执行操作系统RaiseException()
或导致错误。如果该异常在堆栈中向上传播到托管代码,我们将尝试将其映射到托管异常。例如,STATUS_NO_MEMORY
映射到OutOfMemoryException
,STATUS_ACCESS_VIOLATION
映射到NullReferenceException
。
对于没有预定义映射的所有异常代码,我们将它们包装到SEHException
。
来自What is SEHException? cbrumme:msdn blogs 。
尝试在可能导致try{} catch{}
或STATUS_NO_MEMORY
例外的每个代码上添加STATUS_ACCESS_VIOLATION
阻止。然后使用ExternalException.ErrorCode
获取异常详细信息。
答案 1 :(得分:0)
我注意到使用发布配置进行编译时,异常永远不会发生。
如果任何人都应该尝试相同,请尝试发布配置。