C# 编辑并继续:错误 4032

如果启用了“编辑并继续”,修改 try 块中带有活动语句的 catch/finally 处理程序会阻止调试会话继续进行

如果尝试编辑的 catch 或 finally 处理程序的 try 块包含活动语句,则会发生此错误。 仅当活动框架不在调用堆栈顶部时,才会发生此错误。 “编辑并继续”将 catch 和 finally 处理程序标记为只读,因此,只有在特殊情况下才会发生此错误。

考虑下列代码示例:

#define EXAMPLE

class Program

{

   static void Example()

   {

      ...

   }

   static void Main(string[] args)

   {

      try

      {

         Example();

      }

#if EXAMPLE

      catch

      {

       ...

      }

#else

      catch(exception e)

      {

         ...

      }

#endif

   }

}

如果在对 Example 的调用上设置一个断点,然后将 #define EXAMPLE 更改为 #define EXAMPLE2,则会发生此错误。

更正此错误

  • 撤消更改,然后在不进行更改的情况下继续调试。 以后可以在语句不再活动时进行更改。

    - 或 -

    在**“调试”菜单上单击“停止调试”**,进行更改,然后启动新的调试会话。

请参见

参考

try-catch-finally(C# 参考)

受支持的代码更改 (C#)

编辑并继续 (Visual C#)

其他资源

“编辑并继续”错误和警告 (C#)