【问题标题】:C# Try/Catch doesn't catch exceptionC# Try/Catch 不会捕获异常
【发布时间】:2020-06-10 11:49:49
【问题描述】:

我遇到了 try catch 块的问题。它不会捕获 try 块中代码的异常。有没有人已经遇到过这样的问题并且知道如何解决它。变量myCon 是一个MySqlConnection。超过会话的 wait_timeout 时发生异常。已经尝试重启、重建、更改 CPU 设置。

附:当我按 F10/F5 时它不会跳到 catch 块中

【问题讨论】:

  • 是什么让你认为异常不会被捕获?您已将调试器设置为在抛出异常后立即中断。如果您继续(按 F5),它将到达您的断点。
  • 如果你按 f10,调试器应该进入异常处理程序
  • 是的,我知道它通常应该这样做,但在这种情况下,它只是忽略了 catch 块并继续
  • 确保您使用的是“DEBUG”配置而不是“RELEASE”配置。发布将跳过您通常会在 Debug 中看到的一些内容。
  • 它处于调试模式,所以这不起作用。不过谢谢

标签: c# mysql


【解决方案1】:

我不确定,但我看不出 Ping() 实际上是让异常通过。它只返回 true 或 false。

例如 Open() 方法实际上可能会抛出 MySqlException 类型的异常,但不会抛出 Ping()

【讨论】:

  • 我明白了,但是如果我按 F5 不会被 catch 块捕获,Ping() 也会抛出 MySqlException。我也用 ExecuteQuere() 进行了尝试,我遇到了同样的问题,即异常不会被捕获。
  • @SebA 即使Ping 的实现抛出了MySqlException,你可以在这里看到github.com/mysql/mysql-connector-net/blob/… 它会捕获所有 异常并返回@987654324 @。您打破了首次更改异常,这意味着您在调试器中看到了永远不会到达您的应用程序代码的异常。
【解决方案2】:

这可能是 Jon Skeet 和 Steven Wood 提出的调试点,如果没有,您是否尝试过删除 HandleProcessCorruptedStateExceptions?

【讨论】:

  • 是的,如果我按 F5/F10 则不起作用,它只会忽略聊天块并跳转到方法的末尾。删除 HandleProcessCorruptedStateExceptions 也不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 2012-08-06
  • 2015-06-21
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多