将此代码放在ThisDocument_Startup之外的Word文档级别VSTO解决方案中(创建带状按钮,带有单击事件):
int zero = 0;
int divideByZero = 10 / zero;
Run Code Online (Sandbox Code Playgroud)
无需调试即启动(Ctrl + F5),结果:吞下异常,其余代码无提示失败.
如果置于ThisDocument_Startup中,则该异常将可见,但它在其他任何地方都无法显示.微软的VSTO论坛和MSDN文档似乎感觉Try ...应该使用Catch - 这对于已知的未知数来说并不是什么大问题.未知的未知数怎么办?
处理托管代码的未处理异常的所有常见方法似乎都不起作用,大概是因为VSTO使用托管代码与Office COM Interops:
//These don't work
AppDomain.CurrentDomain.UnhandledException ...
System.Windows.Forms.Application.ThreadException ...
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于排除VSTO代码故障的帖子,这些代码似乎总是导致放置尝试...抓住几乎所有东西!
有没有更好的方法来处理已知和未知(现在看不见和沉默!)的失败?
Jak*_*van 10
实际上很简单,在运行office应用程序之前将环境变量VSTO_SUPPRESSDISPLAYALERTS设置为0,然后Office将显示异常,并且在启动时不会在出现问题时终止加载项.
还有一个有用的powershell脚本,可以为你做这些事情,并且在确定何时VSTO无法在http://archive.msdn.microsoft.com/vstotroubleshooter工作时很方便
通过运行开始vstotroubleshooter.ps1 setdbg设置VSTO_SUPPRESSDISPLAYALERTS env变量给你
| 归档时间: |
|
| 查看次数: |
3679 次 |
| 最近记录: |