Показать сообщение отдельно
  #5  
Старый 12.09.2011, 12:09
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Цитата:
Сообщение от ZAlex
Есть проблема: работаю с удаленной базой данных, связь не стабильна, пробую проверить наличие соединения при помощи конструкции типа:
try
ADOConnection.Connected := True;
except
on E : Exception do
ShowMessage(E.ClassName+' '+E.Message);
но except не срабатывает, выскакивает системная ошибка. Подскажите почему. Или кто-нибудь знает другой способ проверки связи?
Я работал не с ADO, но, возможно, ситуация аналогичная.
Во-первых, вопрос: в каком месте выскакивает системная ошибка?

Теперь опишу свой случай. После Connected:=true не факт, что, если связь не получилась, будет исключение (и какая-нибудь ошибка). Ошибка будет позже при проведении, например, запроса к базе, с которой нет связи.
Поэтому
1) exception бесполезен
2) после попытки связи (или перед любой операцией) делайте проверку: if Connected ...
Кстати, в Help'е так и сказано:
Код:
with ADOConnection1 do begin
  Open;
  if Connected then
    { connection successful }
  else
    { connection unsuccessful };
Ответить с цитированием