【问题标题】:Visual Studio 2010 Beta 2 won't continue past exceptionVisual Studio 2010 Beta 2 不会继续过去的异常
【发布时间】:2011-01-10 23:55:10
【问题描述】:

我正在调试一个在 Visual Studio 2010 Beta 2 中调用 WCF 服务的 Windows 窗体客户端。

我想测试我的异常处理代码,所以我故意在app.config 中错误配置了我的端点。引发预期的 ConfigurationErrorsException。但是,Visual Studio 2010 会在有问题的代码行上停止,即使我已将其设置为不会因抛出或用户未处理的异常而中断。

如果我尝试不调试就开始,我会看到一个通用的“我的程序已停止工作”对话框,其中包含调试选项。如果我选择调试,它会将我带回到捕获异常的同一行。

我过不去的线是:

MySvc.MyServiceClient svc = new MySvc.MyServiceClient();

如果我通过在客户端某处除以零来模拟错误(或者只是简单地抛出一个异常),调试器会按照我的预期运行并输入我的错误处理代码。

我的收获是,当app.config 配置错误时,我实际上无法处理异常。我在这里遗漏了什么吗?

更新:

我正在处理 Application ThreadException 事件以尝试捕获:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

【问题讨论】:

    标签: wcf visual-studio-2010 exception-handling app-config


    【解决方案1】:

    Ctrl+D, E 应该允许您配置 VS 异常处理选项。取消选中“Common Language Runtime Exceptions”,然后您的代码将处理所有异常。

    编辑(通过海报)

    评论提供了正确的解决方案。

    也许异常发生在 另一个线程以某种方式通过 WCF 代理中的异步调用? 尝试钩住 Application.UnhandledException 和 AppDomain.CurrentDomain.UnhandledException 事件,看看他们是否抓住了你的 罪魁祸首。

    【讨论】:

    • 我已经这样做了“即使我已将其设置为不会因抛出或用户未处理的异常而中断”
    • 也许异常是通过 WCF 代理中的异步调用以某种方式在另一个线程上发生的?尝试挂钩 Application.UnhandledException 和 AppDomain.CurrentDomain.UnhandledException 事件,看看它们是否抓住了你的罪魁祸首。
    • 做到了!有趣的是,MSDN UnhandledExceptionEventArgs 条目 msdn.microsoft.com/en-us/library/… 完全没用,但有人指出社区 cmets 中的 SO 以获得很好的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多