Delphi. Учимся на примерах
Шрифт:
Обработка исключений
Исключение (exception) — это результат выполнения некорректного оператора, что привело к возникновению ошибки. В языке Object Pascal для обработки исключений предназначена специальная конструкция:
В случае возникновения исключения в блоке операторов, расположенных между ключевыми словами try и except, управление передается блоку операторов после слова except, где можно определить реакцию на возникшую ошибку.
В частности, в блоке except можно обрабатывать исключения в зависимости от их типа с помощью конструкции
Типу исключения соответствует имя класса, производного от класса Exception. В отличие от других классов Delphi, имена классов исключений начинаются к латинской буквы "E". Перечислим некоторые из этих классов:
• EZeroDivide — деление на ноль;
• EAccessViolation — ошибка доступа к памяти;
• ERangeError — выход значения за границы допустимого диапазона;
• EStackOverflow — переполнение стека памяти из-за слишком больших переменных
или чрезмерно большого количество рекурсивных вызовов процедур (вызов процедуры самой себя);• EConvertError — ошибка преобразования (например, строки в число);
• EDatabaseError — ошибка при работе с базой данных;
• EOutOfMemory — переполнение памяти;
• EFCreateError — ошибка создания файла;
• EFilerError — ошибка чтения/записи при работе с файлом;
• EFOpenError — ошибка открытия файла;
• EIniFileException — ошибка при работе с INI-файлом;
• EInOutError — ошибка ввода-вывода.
Если тип исключения точно неизвестен, то для его обработки можно воспользоваться следующей конструкцией:
При этом в блоке операторов после ключевого слова do можно обращаться к свойству E.Message, которое содержит строку с описанием ошибки.
Блок операторов finally
Существует еще одна конструкция, связанная с обработкой исключений:
Блок операторов после ключевого слова finally выполняется в любом случае, независимо от того, возникло исключение в блоке try или нет.