PROPERTY [RO, NE] HasSuppressedMsg: SCAL[2]; |
Флаг поднят, если с исключением связано подавленное сообщение, сброшен в противном случае.
Будет или не будет показано сообщение, зависит от действующего режима подавления сообщений. Режим подавления изменяется атрибутом MSGSUPPRESSIONMODE TRY-блока.
Некоторые сообщения не связаны с исключениями. Ниже приведены примеры таких
сообщений.
STDMSG("Привет", INFORM);
STDFORM("Привет");
(* Код исключения не задан *)
STDFORM("Привет|%<OK>B %<Cancel>X"); (* Код
исключения не задан *)
Если такое сообщение подавлено, оно потеряно окончательно и больше не
может быть воспроизведено.
Другие сообщения связаны с исключениями. Такие сообщения либо информируют
пользователя о произошедшей ошибке, либо дают пользователю какой-то выбор,
причем нажатие кнопки отказа
приводит к выбросу исключения. Ниже приведены примеры таких сообщений.
STDMSG("Привет", STOP, 33);
(* Exc_Raise 33 *)
STDMSG("Привет", STOP);
(* Exc_Raise -1 *)
STDMSG("Привет", CHOICE);
(* Exc_Raise -1 если нажата кнопка "СТОП" *)
STDFORM("Привет|%<OK>B %<Cancel>X", , 33); (* Exc_Raise 33 если нажата
кнопка "Cancel"*)
Системные сообщения как правило тоже связаны с каким-то исключением.
Например, системное сообщение "Индекс вышел за границы" связано с
исключением 12 класса Exc_RunTime.
Если связанное с исключением сообщение подавлено, оно еще не потеряно для программиста; скрытая копия подавленного сообщения хранится в объекте класса Exc_Root. Если в момент вылета необработанного исключения за пределы TRY-блока флаг Exc_Root.ShowSuppressedMsg поднят, будет предпринята попытка показать сообщение. Результат зависит от действующего режима подавления сообщений, возможно, сообщение будет вновь подавлено или отложено. По умолчанию флаг Exc_Root.ShowSuppressedMsg поднят.