Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2013, 14:07   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я остаюсь при свое мнении - на каждый пост свой эксцепшн.
И вместо EIdSocketError я обычно использую общий Exception. А уже потом по коду ошибки разбираюсь что это.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2013, 16:12   #12
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

если не ловит
Цитата:
except
on E: EIdSocketError do
то логично предположить что его тут нет, или не логично?
eval вне форума Ответить с цитированием
Старый 08.12.2013, 16:32   #13
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
если не ловит
то логично предположить что его тут нет, или не логично?
Нелогично, ибо если обвязать эту процедуру еще раз в try except end; ловим вот такое (из лога софта)
Код:
ClassName: EIdSocketError, Message:Socket Error # 10054 Connection reset by peer.
bakanaev вне форума Ответить с цитированием
Старый 08.12.2013, 16:56   #14
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

что значит еще раз? и какого типа исключение тогда ловится?
eval вне форума Ответить с цитированием
Старый 08.12.2013, 17:04   #15
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
что значит еще раз? и какого типа исключение тогда ловится?
Вот что значит (вызываю процедуру test)
Код:
proceure post;
begin
 try
    PauseStop;
    Result := IdHTTP.POST(Url, Data);
    PauseStop;
  except
    on   E: EIdSocketError  do
    begin 
      .....
    end;
  end;
end;

procedure test;
begin
 try
   post;
  except
    on   E: Exception   do
    begin 
      ..... //От сюда лог выше  
    end;
  end;
end;
bakanaev вне форума Ответить с цитированием
Старый 08.12.2013, 17:04   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если обвязать эту процедуру еще раз в try except end
А зачем еще раз? Чегот я запутался что тут происходит...
Цитата:
//тут уже все срабатывает
Ну а ты точно уверен что именно EIdSocketError ?
Из хелпа:
Цитата:
Exception raised when a socket error occurs while reading or writing using the Internet protocol stack.
Про Connection reset by peer. это исключение не в курсе.
I'm learning to live...

Последний раз редактировалось Stilet; 08.12.2013 в 17:07.
Stilet вне форума Ответить с цитированием
Старый 08.12.2013, 17:09   #17
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
//От сюда лог выше
лог не нужен нужен тип пойманого исключения
eval вне форума Ответить с цитированием
Старый 08.12.2013, 17:58   #18
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Полный код
Код:
function HTTPGet(Url: String): String;
begin
  try
    PauseStop;
    Result := IdHTTP.GET(Url);
    PauseStop;
  except
    on E: Exception do
    begin
      if (E.ClassType = EIdSocketError) 
        or (E.ClassType = EIdNotASocket)
        or (E.ClassType = EIdConnectTimeout)
      then 
      begin
        LogString := ' Запрос ушел';
        Synchronize(Log);
     end;
    end;
  end;
end;

function Regg: TFunctionsResult;
...
begin
try
  Html := HTTPGet('http://site.ru');
except
  on E: Exception do
  begin
    Result := ERROR;
    LogString := ' ClassName: ' + E.ClassName + ', Message: ' + E.Message;
    Synchronize(Log);
  end;
end;
end;
Вот вызываем функцию Regg, в логе получаем
Цитата:
ClassName: EIdSocketError, Message:Socket Error # 10054 Connection reset by peer.
bakanaev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключения в Qt iukash Qt и кроссплатформенное программирование С/С++ 6 16.04.2011 18:54
Перехват EidSocketError KREGI Работа с сетью в Delphi 4 18.06.2009 19:55
Задача на наследование...не могу отловить ошибку assasin Общие вопросы C/C++ 13 06.06.2009 17:34
Исключения Rifler Общие вопросы Delphi 5 12.11.2008 00:29
raised exception class EIdSocketError with message' Socket Error # 10022 Invalid argument eldar Работа с сетью в Delphi 16 08.08.2008 23:49