由于某种原因被捕获的异常会冒泡到另一个catch块

时间:2011-07-21 10:04:15

标签: .net

我们有一个不寻常的案例,另一个try-catch块中的try-catch块。两个catch子句都捕获Exception类型的异常。在最内部的try-catch块中发生的错误被第一个为空的catch捕获,而不是移动到下一行,它被另一个catch捕获另一次。这是我以前从未见过的。我们的一位同事声称这是一些设置,但他不记得是什么样的环境。你知道为什么会发生这种情况以及如何“关闭它”吗? 请找到以下代码:

    try {
        //some code                                
        try
        {
               //code that throws exception                           

        }
        catch (Exception)
        {
        }
         //some other code, never reached

        }  
   catch (Exception ex)  
   {
           Logger.Write(ex.ToString());
           return null;  
   }

4 个答案:

答案 0 :(得分:2)

可能导致这种情况的一件事是你的第一个catch块也抛出异常。这将导致第二个被触发。

您的同事可能指的是Visual Studio的异常捕获功能,它允许您打破任何异常,包括已经处理的异常。您可以通过按CTRL + ALT + e或在Debug - >下列出的菜单中找到它。扩展...

如果这两种情况都不是,那么我们需要更多代码

答案 1 :(得分:0)

尝试清理//处理什么都不做,看看是否仍然发生如果是这样// //处理部分导致异常或抛出异常

答案 2 :(得分:0)

我有两个跟进:

  1. 这种情况是否仅发生在您的vs或其他人身上?

    • 如果只发生在您的身上 - 可能是Ctrl + Alt + E,设置调试并中断
  2. 您是否正在运行异常阻止?也许您的异常处理块配置错误了?

答案 3 :(得分:-1)

您可以尝试使用finally块而不是在try-catch块之后编写“其他代码”