Поделиться через


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#)