Обработка исключительных ситуаций
Исключительная ситуация как класс
Любому, кто писал более или менее сложные программы, интуитивно ясно, что такое обработка исключительных ситуаций (ИС). Всякое взаимодействие с операционной системой на предмет получения ресурсов – места на диске, в памяти, открытие файла – может завершиться неудачно.Защитные конструкции языка Object Pascal. Блок try..except.
Для работы с объектами исключительных ситуаций существуют специальные конструкции языка Object Pascal– блоки try, except и try..finally. Они контролируют выполнение операторов, помещенных внутри блока до ключевого слова except или finally.Блок try…finally
Параллельно с блоком try..except в языке существует и try..finally. Он соответствует случаю, когда необходимо возвратить выделенные программе ресурсы даже в случае аварийной ситуации. Синтаксис блока try..finally таков: | try | <Оператор> | <Оператор> | … | finally | <Оператор> | … | end;Использование исключительных ситуаций
Если произошла ошибка и возбуждена исключительная ситуация, то она будет обрабатываться по такому алгоритму: | Если ситуация возникла внутри блока try..except, то там она и будет обработана. Если ИС "продвинута" дальше при помощи оператора raise, а также если она возникла в блоке try..finally, обработка продолжается.Протоколирование исключительных ситуаций
Часто нужно иметь подробный материал для анализа причин возникновения ИС. Разумно было бы записывать все данные о них в файл, чтобы потом прогнозировать ситуацию. Такой подход важен для программ, которые так или иначе будут отчуждены от разработчика: в случае возникновения непредвиденной ситуации это позволит ответить на вопросы "кто виноват?" и "что делать?".Коды ошибок в исключительных ситуациях
Если ваше приложение уже готовится к продаже, если вы планируете его техническую поддержку, то пора задуматься о присвоении числовых кодов. | Ошибкам, возникающим в нем. Сообщение типа "Exception EZeroDivide in module MyNiceProgram at addr $0781BABO" годится для разработчика, пользователя же оно повергнет в полный ступор.Исключительная ситуация EAbort. Функция Assert.
Если вы внимательно просмотрели код системной процедуры HandieException, то увидели там упоминание класса EAbort. ИС EAbort служит единственным – и очень важным – исключением из правил обработки. Она называется "тихой" (Silent) и отличается тем, что для нее обработка по умолчанию не предусматривает вывода сообщений на экран.