powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Nested exception
19 сообщений из 19, страница 1 из 1
Nested exception
    #39834001
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Для отправки email использую javax.mail. Внешний SMTP сервер через некоторое время рвёт соединение.
Ловлю exception:
Код: java
1.
2.
3.
javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
	java.net.SocketException: Обрыв канала (Write failed)


Как мне в блоке catch определить, что есть вложенное исключение java.net.SocketException?
После чего я буду соединятся с сервером снова.
...
Рейтинг: 0 / 0
Nested exception
    #39834006
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
Session s = //a JavaMail session I got from somewhere
boolean isConnected = s.getTransport("smtp").isConnected();


вот это и проверяй в блоке эксепшена а не вложенность исключений
...
Рейтинг: 0 / 0
Nested exception
    #39834012
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. переменная connected будет равна false после выбрасывания исключения?

Код: java
1.
2.
3.
public synchronized boolean isConnected() {
      return connected;
}



забыл ник
Код: java
1.
2.
Session s = //a JavaMail session I got from somewhere
boolean isConnected = s.getTransport("smtp").isConnected();


вот это и проверяй в блоке эксепшена а не вложенность исключений
...
Рейтинг: 0 / 0
Nested exception
    #39834021
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar, у любого JavaException есть методы для движения вверх по стеку исключений.

https://docs.oracle.com/javaee/6/api/javax/mail/MessagingException.html

Но я убеждён что тебе это не нужно.
...
Рейтинг: 0 / 0
Nested exception
    #39834023
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MolasarКак мне в блоке catchа где ты привел этот блок?
...
Рейтинг: 0 / 0
Nested exception
    #39834024
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо я убеждён что тебе это не нужно.но пригодится)
...
Рейтинг: 0 / 0
Nested exception
    #39834030
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
@Override
    public void sendMessage(Message message) throws SenderException {
        if (transport != null) {
            try {               
                javax.mail.Message smtpMessage = new MimeMessage(smtpSession);

                smtpMessage.setFrom(...);
                smtpMessage.setRecipients(...);
                smtpMessage.setSubject(...);
                smtpMessage.setText(...);
                smtpMessage.saveChanges();

                transport.sendMessage(
                        smtpMessage,
                        smtpMessage.getAllRecipients());
    
            } catch (MessagingException ex) {
                if (!transport.isConnected()) {
                    try {
                        transport.close();
                    } catch (MessagingException ex1) {
                        throw new SenderException(
                                exceptionFailedCloseSMTP, ex1);
                    }
                    transport = null;
                    openSession(senderConfig);
                    sendMessage(message);
                }
            } 
        } else {
            throw new SenderException(exceptionSendWOSMTP);
        }
    }




PetroNotC SharpMolasarКак мне в блоке catchа где ты привел этот блок?
...
Рейтинг: 0 / 0
Nested exception
    #39834036
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpmaytonНо я убеждён что тебе это не нужно.но пригодится)
С другой стороны. Он пишет дескыть... После чего я буду соединятся с сервером снова.
Отличная идея. А что есть кейс когда не надо соединятся? Какое вообще можно принять решение
по факту исключения? Расскажите мне господа хорошие. Какое?
...
Рейтинг: 0 / 0
Nested exception
    #39834038
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Наверно есть кейс автопопытки как автодозвон на телефоне).
И есть кейс что письмо будет в статусе Не отправилось(
...
Рейтинг: 0 / 0
Nested exception
    #39834039
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и пусть проверяет MessagingException. Зачем ему глубже копать?
...
Рейтинг: 0 / 0
Nested exception
    #39834040
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar
Код: java
1.
} catch (MessagingException ex) {

после этой строки добавь метод
проверитьВложенное(ex);
Что внутри него выше дали ссылку.
...
Рейтинг: 0 / 0
Nested exception
    #39834042
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу и пусть проверяет MessagingException. Зачем ему глубже копать?обычно там подробности (во вложенном). Все должны уметь их достать.
Я про это.
...
Рейтинг: 0 / 0
Nested exception
    #39834043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                if (!transport.isConnected()) {
                    try {
                        transport.close();
                    } catch (MessagingException ex1) {
                        throw new SenderException(
                                exceptionFailedCloseSMTP, ex1);
                    }
                    transport = null;
                    openSession(senderConfig);
                    sendMessage(message);
                }


Еще более ужасно выглядит попытка повторной отправки. Это что. Типа с первого раза не затолкали.
А второй - точно-точно зайдет? Хорошо. А где третий рывок? И где для них всех обработка ошибки?
...
Рейтинг: 0 / 0
Nested exception
    #39834044
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Да. Повтор я бы выше, делал. Это вроде как БЛ.
...
Рейтинг: 0 / 0
Nested exception
    #39834046
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
do{
   ....
while(somethingWrong);


Почему сразу так не сделать?
...
Рейтинг: 0 / 0
Nested exception
    #39834058
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому мне и важно обработать вложенное исключение, т.к. если с 1-й попытки письмо не отправилось по причине разрыва соединения SMTP сервером, то необходимо восстановить соединение и повторить отправку. В этом случае письмо точно уйдёт. Если конечно не будет другого исключения.
mayton
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                if (!transport.isConnected()) {
                    try {
                        transport.close();
                    } catch (MessagingException ex1) {
                        throw new SenderException(
                                exceptionFailedCloseSMTP, ex1);
                    }
                    transport = null;
                    openSession(senderConfig);
                    sendMessage(message);
                }


Еще более ужасно выглядит попытка повторной отправки. Это что. Типа с первого раза не затолкали.
А второй - точно-точно зайдет? Хорошо. А где третий рывок? И где для них всех обработка ошибки?
...
Рейтинг: 0 / 0
Nested exception
    #39834065
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasarпо причине разрыва соединения SMTP сервером,а если он надолго в ауте. Санкции)
...
Рейтинг: 0 / 0
Nested exception
    #39834118
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да плевать. Пускай крутит бесконечные циклы. Кому от этого плохо? Ваш браузер за 5 минут сделает
больше запросов чем этот код за сутки.
...
Рейтинг: 0 / 0
Nested exception
    #39834215
может для реконнекта библиотекой воспользоваться?

https://github.com/jhalterman/failsafe
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Nested exception
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]