try except raise

Askmmm
Дата: 30.11.2007 23:07:46
Подскажите как сделать чтобы программа не останавливалась на внутреннем raise:

Не моя функция, которую нельзя изменить:
fuction Server.Connect;
begin
if not Connected then
raise EError.Create();
end;

Мой код:
A: Server;
try
A.Connect;
except
writeln('not connected');
end;

Программа останавливается на raise,
как сделать, чтобы дело дошло до моей обработки ошибки,
а raise EError.Create(); не вызывалась.
Kotъ-Begemotъ
Дата: 30.11.2007 23:16:49
Переписать в виде

try
fuction Server.Connect;
...
...
except
// Можно на конкретную ошибку on E....Error do begin
// А можно на любую
MessageBox(...тра-ля-ля... Ошибочка вышла!...);
end;//try
Askmmm
Дата: 30.11.2007 23:35:33
Функция
function Server.Connect; находится не в моём DCU и изменению не подлежит.

Можно как-то заглушить обработку raise EOleSysError.Create(ErrorStr, HR, 0);
чтобы программа доходила до моего кода ?

Может какие-то дерективы поставить как здесь:
{$I-} writeln; {$I+} if (IOresult <> 0) then OutError;
Без деректив {$I-} и {$I+} будет выскакивать внутренняя обработка ошибки - окошко.
С дерективами я сам всё обрабатываю.
Артем1
Дата: 01.12.2007 00:02:58
если try есть, и ошибка ловится, то ничего на ней не останавливается. это наверное просто delphi показывает эксепшен. а в самом приложении будет нормально работать.
если неохота, что бы и дельфи останавливалась, там для дебаггера настройка есть, какие классы исключений игнрировать. по крайне мере так было на 7-ке
Askmmm
Дата: 01.12.2007 00:09:37
Точно, деббагер давал прерывание, а в свободном плавании работает как часы.
Спасибо.
А то я думал, что перестал всё понимать, давно не программировал.
Альт
Дата: 01.12.2007 10:48:55
меню Tools->Debugger Options закладка Language Exceptions ?