Книга: Описание языка PascalABC.NET

Примеры обработки исключений

закрыть рекламу

Примеры обработки исключений

Пример 1. Обработка неверного ввода данных.

Рассмотрим программу.

var i: integer;

begin

readln(i);

writeln(i);

writeln('Выполнение программы продолжается');

end.

Если при вводе данных произойдет ошибка (например, мы введем не число), то программа завершится с ошибкой (ошибка ввода), и последующие операторы writeln не будут выполнены.

Перехватим исключение в блоке try:

var i: integer;

begin

try

readln(i);

writeln(i);

except

writeln('Ошибка ввода');

end;

writeln('Выполнение программы продолжается');

end.

На этот раз при возникновении ошибки ввода программа не будет завершена, а выполнение будет передано в блок except, после чего выполнение программы продолжится дальше. Таким образом, в последней программе не выполнится лишь оператор writeln(i).

Если в блоке try могут возникнуть различные исключения, то обычно используется вторая форма блока except с несколькими обработчиками исключений.

Пример 2. Обработка различных исключений.

var a,b: integer;

assign(f,'a.txt');

try

readln(a,b);

reset(f);

c:=a div b;

except

on System.DivideByZeroException do

writeln('Целочисленное деление на 0');

on System.IO.IOException do

writeln('Файл отсутствует');

end;

Часто необходимо совмещать обработку исключений и освобождение ресурсов независимо от того, произошло исключение или нет. В этом случае используются вложенные операторы try ... except и try ... finally.

Пример 3. Вложенные операторы try ... except и try ... finally.

assign(f,'a.txt');

try

reset(f);

try

try

c:=a div b;

except

on System.DivideByZeroException do

writeln('Целочисленное деление на 0');

end;

finally

close(f);

end;

except

on System.IO.IOException do

writeln('Файл отсутствует');

end;

Обратим внимание, что в данном примере исключение, связанное c целочисленным делением на 0, обрабатывается в самом внутреннем блоке try, а исключение, связанное с отсутствующим файлом - в самом внешнем. При этом, если файл был открыт, то независимо от возникновения исключения деления на 0 он будет закрыт.

Оглавление книги


Генерация: 0.130. Запросов К БД/Cache: 1 / 0
поделиться
Вверх Вниз