Консультация № 37609
15.03.2006, 20:26
0.00 руб.
0 3 3
Здраствуйте уважаемые эксперты!
У меня есть приложение которое работает и с почтой по SMTP и с буффером, и выбрасывает разные окошки с ошибками такими как: Conection time out, Host noy found, Cannot open Clipboard... можно ли как нибуть зделать чтобы приложение воoбще не выбрасывало никаких окошек с ошибками, а просто игнорировало бы их и работало дальше, или как можно обработать эти ошибки чтобы они не влияли на работу приложения?
Заранее спасибо.

Обсуждение

Неизвестный
15.03.2006, 21:00
общий
это ответ
Здравствуйте, Станислав!
Да, можно. Вот так например:

<i>try
{здесь действия, которые могут вызвать ошибки}
except
Abort;
end;</i>

При этом, поместив в этот блок сразу много строк, можно получить невыполнение десятков строк кода, что не есть хорошо. Следует помещать в try..except только те строки, которые <u>реально</u> дают ошибки, а не строки вроде <i>s:=‘123‘;</i>
давно
Мастер-Эксперт
425
4118
16.03.2006, 05:44
общий
это ответ
Здравствуйте, Станислав!
Используйте Try..Except и Try..Finally для обработки исключительных ситуаций, если конечно Ваши окошки с сообщениями являются следствием исключительных ситуаций.
А вообще было бы неплохо написать, какие компоненты или функции Вы используете для работы с почтой. Если это функции API, то они ВСЕГДА возвращают какой-либо результат по выполнению или невыполнению. Если это какие-то компоненты, то нужно смотреть описание компонентов.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
16.03.2006, 10:09
общий
это ответ
Здравствуйте, Станислав!
Можно установить обработчик исключений для всего приложения. Тогда любой необработанный Exception приведет к вызову этого обработчика, а приложение не выдаст никаких сообщений и не завршитработу.
Только будте осторожней. Это черевато пропуском больших куксков кода и в связи с этим возможно неожиданным поведением программы после исключений.
См. приложение:

Приложение:
procedure TForm1.ExceptionHander(Sender: TObject; E: Exception);begin //Обработка всех ошибок //например запись их в лог :)end;procedure TForm1.FormCreate(Sender: TObject);begin Application.OnException := ExceptionHander;end;
Форма ответа