Word VSTO加载项中的SEHException(VS2010 / Word2010)

时间:2012-08-08 06:13:08

标签: c# .net visual-studio-2010 ms-word vsto

我遇到一个奇怪的问题,我的.net c#4.0加载项(一个相对简单的加载项,包含大量的互操作和一个customtaskpane)导致单词崩溃:

如果加载项运行时间较长(> 5分钟),有时会突然出现“对话框不再有效”的窗口对话框。几秒钟后,广告错误对话框打开,我瞥见它显示SEHException。但是当Windows立即重新启动Word时,我无法仔细查看异常。调试器没有帮助,因为它没有破坏。

知道导致SEHException的原因以及我可以研究的内容吗? Word / VSTO的具体建议是理想的,但也欢迎有关避免和调查SEHExceptions的一般性建议。

由于 chabun

2 个答案:

答案 0 :(得分:0)

获得此异常的一种方法是,如果非托管代码执行操作系统RaiseException()或导致错误。如果该异常在堆栈中向上传播到托管代码,我们将尝试将其映射到托管异常。例如,STATUS_NO_MEMORY映射到OutOfMemoryExceptionSTATUS_ACCESS_VIOLATION映射到NullReferenceException

对于没有预定义映射的所有异常代码,我们将它们包装到SEHException

来自What is SEHException? cbrumme:msdn blogs


尝试在可能导致try{} catch{}STATUS_NO_MEMORY例外的每个代码上添加STATUS_ACCESS_VIOLATION阻止。然后使用ExternalException.ErrorCode获取异常详细信息。

答案 1 :(得分:0)

我注意到使用发布配置进行编译时,异常永远不会发生。

如果任何人都应该尝试相同,请尝试发布配置。