通常,如果遇到未处理的异常,Visual Studio 会中断并显示异常助手窗口。
但在某些情况下,Visual Studio 只会停止正在运行的程序,而不会中断或显示异常帮助程序。
异常选项 (Ctrl+Alt+E) 配置正确:“user-unhandled”在所有项目上都被选中,“thrown”未被选中。在调试选项中,我启用了异常助手。
因为它只发生在某些场合,所以我试图弄清楚 Visual Studio 何时进入“故障异常助手状态”。
编辑:
看起来故障异常助手 ghost 只出现在 winforms 应用程序中,并且只有在调用 Web 服务或打开数据库连接等外部操作之后才会出现。
结束编辑
It turns out the exception assistant works fine until an ADODB connection is opened:
var conn = new ADODB.Connection(); conn.Open("Provider=SQLOLEDB;Server=localhost;Database=db;UID=user;PWD=pw;", "", "", -1); throw new InvalidOperationException();
After excecuting the conn.Open statement, the exception assistant will never kick in.
这听起来对任何人来说都很熟悉,更重要的是:有人有解决问题的方法吗?可以想象,如果应用程序总是在出现异常时退出,那么调试应用程序将变得非常困难。
最佳答案
我不完全确定是什么导致了这种行为 - 但我刚刚发生了完全相同的事情。
此答案的简短版本:
重新安装 Visual Studio 2008 sp1。如果您还没有安装它,那么我想您可以修复您的 VS 安装,或者现在简单地应用 sp1,它应该可以修复它。
长版:
我的代码中有一个异常,并且 Visual Studio 在异常发生时没有显示调试助手 - 相反,我会看到 Windows 错误报告对话框,并提示我是否要调试该过程!如果我在抛出所有异常时告诉 VS 中断,它会起作用(但这不是调试应用程序的方法)。
奇怪的是,在同一台机器上,我已经能够调试在 IIS7.5 中运行的 WCF 服务 - 所以我无法理解它。
经过无数次咒骂和反复尝试,我禁用了 Windows 错误报告。尽管如此,对话框还是出现了,VS 不会因为异常而中断。
所以我禁用了 Windows 错误报告服务(它是按需启动的) - 这次应用程序将简单地退出而不显示对话框 - 但 VS 仍然不会因异常而中断。
最后,我认为 VS 可能存在配置问题 - 所以我重新应用了 Visual Studio 2008 sp1,现在它又可以正常工作了。
关于visual-studio - Visual Studio 不中断异常助手,只是停止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406283/