Except Or Finally?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Except Or Finally?

Сообщение Sergei I. Gorelkin » 21.06.2011 04:51:11

В состоянии {$I+} при ошибке операций с файлами бросается исключение типа EInOutError. Если его не обработать, программа завершится. Вот пример, где исключение обрабатывается, программа печатает сообщение об ошибке и о том, что продолжает выполняться:

Код: Выделить всё
{$mode objfpc}
uses sysutils;
var f: textfile;

begin
  assign(f,'c:\nonexistent');
  try
    reset(f);
  except
    writeln('exception class=',exceptobject.classname,' message=', Exception(exceptobject).message);
  end;
  writeln('Продолжаем что-то делать');
end.


В состоянии {$I-} IoResult нужно проверять самостоятельно.
Разница в том, что IoResult нужно проверять сразу же после операции и никак иначе, а исключение можно обработать где угодно, имея, грубо говоря, один обработчик ошибок на все файловые операции в программе.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Except Or Finally?

Сообщение Widowmaker » 21.06.2011 12:29:35

Теперь понятно, спасибо. Всё разъяснилось. Исключение выскакивало, просто никак не обрабатывалось. Вместо него обрабатывалась ошибка вроде getlasterror. "Век живи -- век учись"... :)
Аватара пользователя
Widowmaker
новенький
 
Сообщения: 37
Зарегистрирован: 27.04.2011 18:32:04

Re: Except Or Finally?

Сообщение Brainenjii » 21.06.2011 12:32:50

+1
Спасибо за разъяснения ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru