【问题标题】:Exception not catched未捕获异常
【发布时间】:2012-05-31 21:24:00
【问题描述】:

我有一个带有 Win7 的 64 位系统,我使用带有 .Net Framework 4.0 的 VS2010。

在 Winform 应用程序中,我从第三方组件获得异常,我正在尝试使用 Try-Catch 捕获此异常,但它不起作用!

为什么?

更新

如果我取消选中 CLR Exceptions 它可以正常工作,但由于这个已知问题我不得不检查它:Why the form load can't catch exception?

如果我按 F10,它会继续进入 catch 语句!

【问题讨论】:

  • 这看起来很奇怪。 Exception 当然应该抓住这一点。您是否尝试过显式捕获抛出的异常类型?
  • 我试图修正标题中的语法,然后我意识到这是故意的。懒洋洋的。 (SO 拒绝与旧问题同名的新问题)。
  • 您已将调试器配置为在抛出异常时中断。当程序在tryblock 内停止时,您是否尝试按 F5?
  • 什么是完整的堆栈跟踪? CAENRFIDException,确实扩展了 System.Exception,我假设。您是否尝试过检查其他异常复选框,以防万一它是其中之一?此外,“未捕获异常”。 catch 的范式是 catch/caught/caught,它是一个强动词。 :)
  • 好的,如果在调试器中按下F11F5 或其他一些“继续”按钮会导致catch 块被执行,那么这是预期的行为。相反,你希望发生什么?您已将调试器配置为在引发 CLR 异常时中断,以解决 64 位环境问题。这意味着每次抛出一个调试器都会中断。如果您继续,您的catch 块将照常执行。

标签: c# .net winforms exception-handling


【解决方案1】:

您是否未选中以下设置:

当异常跨越 AppDomain 或托管/本地边界时中断(仅限托管)

在您的工具->选项->调试->Visual Studio 2010 的常规选项卡中

在 MSDN here中有解释

【讨论】:

    【解决方案2】:

    您似乎在此处使用调用非托管 dll。尝试使用ExternalException Class 捕获此异常。这可能对您有用,但是一旦您脱离了 .NET 运行时的控制,这完全取决于非托管代码; .NET 运行时无能为力。

    【讨论】:

    • 即使它是一个非托管 dll...ExternalException 具有 Exception 作为基类。于是被catch (Exception)抓到了
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 2014-04-10
    • 2016-09-24
    相关资源
    最近更新 更多