Язык программирования C++. Вводный курс


              

в выражении throw, остаются без


В последнем случае catch-обработчик сможет модифицировать объект-исключение. Однако переменные, определенные в выражении throw, остаются без изменения. Например, модификация eObj

внутри catch-обработчика не затрагивает глобальную переменную state, установленную в выражении throw:











void calculate( int op ) {

try {

      mathFunc( op );

   }

   catch ( EHstate &eObj ) {

      // исправить ошибку, вызвавшую исключение

      eObj = noErr;  // глобальная переменная state не изменилась

   }



}

Catch-обработчик переустанавливает eObj в noErr

после исправления ошибки, вызвавшей исключение. Поскольку eObj – это ссылка, можно ожидать, что присваивание модифицирует глобальную переменную state. Однако изменяется лишь объект-исключение, созданный в выражении throw, поэтому модификация eObj не затрагивает state.


Содержание  Назад  Вперед