Читайте также:
|
|
В Delphi определены стандартные классы исключений (см. приложение Б). Именно эти имена, а также имена пользовательских классов (см. ниже) могут применяться в обработчиках исключений.
Важно помнить, что управление передается самому первому обработчику (возможно существование нескольких обработчиков), класс которого способен обрабатывать данное исключение. Если, например, в списке первым стоит класс EAbort, который может обработать любое исключение, ни один из стоящих за ним обработчиков никогда не получит управления. Точно также, если указан обработчик для класса EIntError, за ним бесполезно размещать обработчики EDivByZero, ERangeError или ElntOverflow.
Try
...
Except
// Не имеет смысла делать так:
оn EIntError do...;
оn ERangeError do...;
оn EDivByZero do...;
// Надо так:
оn ERangeError do...;
оn EDivByZero do...;
оn EIntError do...;
end;
При возникновении исключительной ситуации объекты классов-обработчиков - создаются и уничтожаются автоматически. Если программист пожелает использовать поля или методы класса-обработчика явно, он должен поименовать автоматически создаваемый объект. Для этого перед именем класса ставится идентификатор и двоеточие:
оn EObject: EClassName do..;
Для стандартных классов такой прием фактически позволяет использовать единственное строковое свойство Message со стандартным сообщением об ошибке, которое получают все наследники класса Exception. Исключение составляет класс EInOutError, в котором для программиста может представлять интерес целочисленное свойство ErrorCode с кодом ошибки ввода-вывода. Например:
Try
Reset(F);
Дата добавления: 2015-07-19; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Класс Exception | | | While not EOF(F) do begin |