把这码的地方Word文档中的级别应用程序级方案之外的ThisDocument_Startup(创建一个带按钮,一个点击事件):

int zero = 0;
int divideByZero = 10 / zero;

开始调试(Ctrl+F5),结果是:例外的是吞下,其余的代码失败默默。

异常 可见,如果放在ThisDocument_Startup,但它似乎在其他地方。微软应用程序级论坛和MSDN文档似乎感觉尝试...赶上应用-这是不是一个大问题,对已知未知数。什么有关未知的未知?

所有的共同的方式处理未处理的例外情况管理的代码不起作用,大概是因为外接程序,采用管理的码的办公室COM Interops:

//These don't work
AppDomain.CurrentDomain.UnhandledException ...
System.Windows.Forms.Application.ThreadException ...

我读职位有关的故障排除应用程序级代码,似乎总是导致把试着抓住周围一切!

是否有更好的方式来处理已知的和未知的(现在看不见的和沉默!) 失败?

有帮助吗?

解决方案

实际上很简单,在运行office应用程序之前将环境变量VSTO_SUPPRESSDISPLAYALERTS设置为0,然后Office将显示异常,并且在启动时不会在发生问题时终止加载项。

还有一个有用的powershell脚本可以为你做这些事情,并且在确定何时VSTO无法在 http://archive.msdn.microsoft.com/vstotroubleshooter 首先运行 vstotroubleshooter.ps1 setdbg ,它将为您设置VSTO_SUPPRESSDISPLAYALERTS env变量

其他提示

我认为问题仅与“附加用户界面”的例外情况隔离开来。 - 恰好是这里的直接设置(Word 2007):

Word选项>高级>一般> “显示加载项用户界面错误”

我有同样的问题,一个应用程序级加在词。

如果你正在运行程序的启动它从Visual Studio与F5,然后你就会总是获得"未经处理的用户代码"在VS(例如2008年SP1),除非:

  • 你取消Visual Studio设定的"破的时候异常是..用户未处理的"对CLR例外情况,或

  • 你宽宏地应用对[系统。诊断。DebuggerNonUserCodeAttribute()]的注释。

一旦你做了这些,UnhandledException/ThreadException似乎工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top