![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка ошибок Indy. собственно как поймать?
Виталий Юрьевич © (2006-08-19 23:08:00)Добрый день.
Имеется программа, использующая idSMTP компонент...
хотелось бы вытащить больше информативности при отправке по двум пунктам:
1)информацию вида - подключились, шлём, отключились.
status в принципе пока использую, но там же всё по английски.. может есть какие коды чтоли :) Как выход можно сравнивать строки 'resolving host' на 'получение хоста' вроде...
2) и основное - обработка исключений.. как я не мучался c except'ом всяко разно.. так и не получилось..EIdSockedError делфи говорит что не знает такой.. вот и нужно на конкретную ошибку делать конкретные действия - на ошибку авторизации сказать что пароль не тот.. и т.д.
а то вроде exception вроде есть, и тот который надо, но идёт он "от имени делфи"... и пишет нормально 'host not found' 'authentification failed'.... а как же всё это в человеческий вид сделать...
а пока и сижу на
except
message('ВСЁ. хана. что-то не так...')
:)
заранее благодарю за помощь..
Виталий Юрьевич (2006-08-23 19:35:00) [1]обидно блин.. перенесли в "начинающим"... хотя я на делфи около 7 лет работаю... за деньги...
ну не натыкался я ранее на indy..
с проблемой разобрался.. сам... думал, тут быстрее ответы дадут... а тут только что-то типа "ты тупой иди отсюда здесь тебе не место".... очень жаль..
Пусик (2006-08-22 23:10:00) [2]В сообщении Exception(а точнее - в коде ошибки) есть вся исчерпывающая информация.
Виталий Юрьевич (2006-08-22 21:35:00) [3]Пусик, да собственно всё надо обработать.. если не произошёл connect, то почему (нет инета, непраилый сервер, неправильный логин, неправильный пароль и т.п.)... потому и просто обработать в связке try connect except нельзя.. поскольку будет ошибка просто что не подключился - а нужно причину, почему именно не подключился..
Сергей М. в документации указано куча исключений, но делфи почему то не хочет их "ловить". например, несколько из тех, которые я ЗНАЮ.
EIdSockedError — Ошибка сокета.
EIdSocksAutnError — Ошибка идентификации пользователя на Socks-прокси.
EIdDnsResolverError —Ошибка класса TIdDnsResolver.
EIdInvalidSocked —Неожиданное закрытие соединения.
EIdMaxLoginAttempt — потомок класса EIdLoginException. Исчерпан лимит подключений.
...
и т.д.
Пусик (2006-08-20 16:19:00) [4]
> Виталий Юрьевич © (20.08.06 15:29) [3]
Та вроде бы достаточно информации об ошибке и в таком случае:
DispLog('Подключение к серверу...');
try
idSmtp1.Connect;
DispLog('Подключение к серверу... Ok');
except
on E: Exception do DispLog(E.Message);
end;
if idSmtp1.Connected then
try
DispLog('Отправка письма...');
idSmtp1.Send(IdM);
DispLog('Отправка письма... Ok');
except
on E: Exception do DispLog(E.Message);
end;
if idSmtp1.Connected then idSmtp1.Disconnect;
Сергей М. (2006-08-20 15:58:00) [5]
> а остальное почему то не известно
оно и тебе не известно.
Иначе бы не устраивал здесь клоунаду, а привел бы конкретныйкласс исключения.
Пусик (2006-08-20 15:48:00) [6]А где, код, ошибки в котором обработать надо?
Виталий Юрьевич (2006-08-20 15:29:00) [7]пока делаю так:
except on e : EIdException
do begin
messagedlg('Произошла ошибка - '+e.Message,mtError,[mbOK],0);
читабельно хотябы..
делфе класс EIdException известен.. а остальное почему то не известно...
Виталий Юрьевич (2006-08-19 23:13:00) [8]Indy 10, что в комплекте с D2005
Пусик (2006-08-19 23:09:00) [9]
> Виталий Юрьевич (19.08.06 23:08)
С Indy очень важно, какая версия Indy используется.