Иллюстрированный самоучитель по Delphi 7 для профессионалов

Обработка исключительных ситуаций

  • Исключительная ситуация как класс

    Любому, кто писал более или менее сложные программы, интуитивно ясно, что такое обработка исключительных ситуаций (ИС). Всякое взаимодействие с операционной системой на предмет получения ресурсов – места на диске, в памяти, открытие файла – может завершиться неудачно.
  • Защитные конструкции языка 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) и отличается тем, что для нее обработка по умолчанию не предусматривает вывода сообщений на экран.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.