Exc_TermByUser Exc_Root


Описание

Внутренние исключения, выбрасываемые по прерыванию программы пользователем (нажатием клавиш Esc или Ctrl+S) или программистом из отладчика. Проверка нажатия Esc или Ctrl+S выполняется только во время работы исполняемого кода модулей (но не во время интерпретации определений модуля) в момент считывания разделителя операторов - точки с запятой. Прервать интерпретацию определений модуля (от MODULE до BEGIN) невозможно в принципе.

Обработка нажатия Esc и Ctrl+S зависит от текущего режима выбрасывания исключений класса Exc_TermByUser, программно устанавливаемого атрибутом TERM_BY_USER TRY-блока.

В приведенном ниже примере выбрасывание исключения Exc_TermByUser невозможно в принципе. Следует обратить внимание на отсутствие точки с запятой после TRY-блока.

MODULE Test;

IMPORT L_General;

BEGIN
 TRY [TERM_BY_USER(TERM_BY_USER_IGNORE)]
  ;;;
 EXCEPT
 END
END.

Во время исполнения тел инициализации библиотек, программных комплексов NTF, обработчиков событий OnReposition, OnChangeIndex, OnRedraw, OnConformToWindow, OnCloseWindow ввод пользователя не проверяется, поэтому режим выбрасывания исключений значения не имеет.

Исключения данного класса заведомо не могут иметь связанных отложенных (Exc_Root.HasDeferredMsg) или подавленных (Exc_Root.HasSuppressedMsg) сообщений.

См. также