Обробка помилок Indy. власне як зловити?
Доброго дня.
Є програма, яка використовує idSMTP компонент.
хотілося б витягнути більше інформативності при відправці по двом пунктам:
1) інформацію виду - підключилися, шолом, відключилися.
status в принципі поки використовую, але там же все по англійськи. може є якісь коди чтоли :) Як вихід можна # XA0; порівнювати рядки "resolving host" на "отримання хоста" на кшталт.
а поки і сиджу на
except
message ( "ВСЕ. хана. щось не так.")
заздалегідь дякую за допомогу ..
> Віталій Юрійович (19.08.06 23:08)
З Indy дуже важливо, яка версія Indy використовується.
except on e. EIdException
do begin
messagedlg ( "Помилка -" + e.Message, mtError, [mbOK], 0);
читабельно хочаб ..
Делфі клас EIdException відомий. а решта чомусь не відомо.
А де, код, помилки в якому обробити треба?
> А решта чомусь не відомо
воно і тобі не відомо.
Інакше б не влаштовував тут клоунаду, а привів би конкретний клас виключення.
Та начебто достатньо інформації про помилку і в такому випадку:
# XA0; DispLog ( "Підключення до сервера.");
# XA0; try
# XA0; # XA0; idSmtp1.Connect;
# XA0; # XA0; DispLog ( "Підключення до сервера. Ok");
# XA0; except
# XA0; # XA0; on E: Exception do DispLog (E.Message);
# XA0; end;
# XA0; if idSmtp1.Connected then
# XA0; try
# XA0; # XA0; DispLog ( "Відправлення листа.");
# XA0; # XA0; idSmtp1.Send (IdM);
# XA0; # XA0; DispLog ( "Відправлення листа. Ok");
# XA0; except
# XA0; # XA0; on E: Exception do DispLog (E.Message);
# XA0; end;
# XA0; if idSmtp1.Connected then idSmtp1.Disconnect;
Пусик, та власне все треба обробити. якщо не стався connect, то чому (немає інету, непраілий сервер, неправильний логін, неправильний пароль і т.п.). тому і просто обробити в зв'язці try connect except не можна. оскільки буде помилка просто що ні підключився - а потрібно причину, чому саме не підключений ..
Сергій М. в документації вказано купа винятків, але Делфі чомусь не хоче їх "ловити". наприклад, кілька з тих, які я ЗНАЮ.
EIdSockedError - Помилка сокета.
EIdSocksAutnError - Помилка ідентифікації користувача на Socks-проксі.
EIdDnsResolverError -помилки класу TIdDnsResolver.
EIdInvalidSocked -Неожіданное закриття з'єднання.
EIdMaxLoginAttempt - нащадок класу EIdLoginException. Вичерпано ліміт підключень.
.
і т.д.
У повідомленні Exception (а точніше - в коді помилки) є вся вичерпна інформація.
прикро млинець. перенесли в "початківцям". хоча я на Делфі близько 7 років працюю. за гроші.
ну не натикався я раніше на indy ..
з проблемою розібрався. сам. думав, тут швидше відповіді дадуть. а тут тільки щось типу "ти тупий йди звідси тут тобі не місце". дуже шкода..
Пам'ять: 0.74 MB
Час: 0.046 c