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