Страница 3 из 3

Re: Except Or Finally?

Добавлено: 21.06.2011 04:51:11
Sergei I. Gorelkin
В состоянии {$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 нужно проверять сразу же после операции и никак иначе, а исключение можно обработать где угодно, имея, грубо говоря, один обработчик ошибок на все файловые операции в программе.

Re: Except Or Finally?

Добавлено: 21.06.2011 12:29:35
Widowmaker
Теперь понятно, спасибо. Всё разъяснилось. Исключение выскакивало, просто никак не обрабатывалось. Вместо него обрабатывалась ошибка вроде getlasterror. "Век живи -- век учись"... :)

Re: Except Or Finally?

Добавлено: 21.06.2011 12:32:50
Brainenjii
+1
Спасибо за разъяснения ^_^