Исключительная ситуация EAbort
Если вы внимательно просмотрели код
системной процедуры HandieException,
то увидели там упоминание класса EAbort. ИС EAbort служит
единственным — и очень важным — исключением из правил
обработки. Она называется "тихой" (Silent)
и отличается тем, что для нее обработка по умолчанию
не предусматривает вывода сообщений на экран. Естественно,
все сказанное касается и порожденных от нее дочерних
объектных классов.
Применение EAbort
оправдано во многих случаях. Вот один из примеров. Пусть
разрабатывается некоторая прикладная программа или некоторое
семейство объектов, не связанное с VCL. Если в них возникает
ИС, то нужно как-то известить об этом пользователя.
А между тем прямой вызов для этого функции
showMessage или даже MessageBox
не всегда оправдан. Для маленькой и компактной динамической
библиотеки не нужно тащить за собой громаду VCL. С другой
стороны, в большом и разнородном проекте нельзя давать
каждому объекту или подпрограмме самой общаться с пользователем.
Если их разрабатывают разные люди, такой проект может
превратиться в вавилонскую башню. Тут и поможет EAbort.
Эта исключительная ситуация не создается системой —
ее должен создавать и обслуживать программист.
Применение EAbort
— реальная альтернатива многочисленным конструкциям
if..then и тем более (упаси боже!) goto.
Эта ИС не должна подменять собой другие, вроде ошибки
выделения памяти или чтения из файла. Она нужна, если
вы сами видите, что сложились определенные условия и
пора менять логику работы программы.
If LogicalCondition
then Raise EAbort.Create('Condition 1');
Если не нужно определять сообщение,
можно создать EAbort и проще — вызвав процедуру
Abort (без параметров), содержащуюся в модуле
SYSUTILS.PAS.
|