Как перехватить управление при ошибке в/в?
После считывания или записи всегда проверяйте как прошла операция! Для этого в Паскале предусмотрены ключи {$I-} и {$I+}, пример:
Var IoRes : Integer;
f : File of text;
Procedure Error(IO:Integer);
Begin
Writeln('Произошла ошибка #',IO);
Readln;
End;
BEGIN
Assign(F,'c:\temp\example.txt');
Repeat
{$I-}
Reset(F);
IoRes:=IOResult;
{$I+}
If IoRes<>0 then Error(IoRes);
Until IoRes=0;
{$I-}
Write(F,'Hello world!');
IORes:=IOResult;
{$I+}
If IoRes<>0 then Error(IORes);
END.