Является ли хорошей практикой обрабатывать исключение, связанное с его сообщением от getMessage () на платформе Android?
В моем приложении android у меня есть, например, следующий класс:
public class Test {
boolean alreadyTried;
public Test() {
alreadyTried = false;
}
private void doTest() {
try {
downloadPictureFromServer(); //uses okhttp3
} catch (Exception e) {
if(e.getMessage() != null && e.getMessage().contains("Connection reset by peer")){
//try again (only once)
if(alreadyTried) {
Log.e("Test", "Connection reset by peer repeatedly, cannot communicate with the server");
} else {
Log.e("Test", "Connection reset by peer, trying to communicate with the server again...");
alreadyTried = true;
doTest(); //try again
}
} else {
throw e;
}
}
}
}
Когда вызывается doTest () , он начинает взаимодействовать с веб-приложением, запущенным на сервере Tomcat, иногда возникает следующее исключение:
javax. net .ssl.SSLHandshakeException : Рукопожатие SSL прервано: ssl = 0x7653281108: ошибка ввода-вывода во время системного вызова, сброс соединения одноранговым узлом
Это маловероятно, но может произойти при перезапуске сервера ... et c. Это уже случалось со мной во время тестирования более одного раза.
Итак, могу ли я использовать это сообщение и безопасно проверить, содержит ли оно строку « Сброс соединения партнером »? Или есть шанс, что сообщение от getMessage () будет на другом языке, отличном от английского sh?
Я пытался найти эту информацию, но нигде не нашел ... Я хочу быть уверен, что справиться с этим, как в этом примере, и успокоить мой разум - это нормально Я также попытался изменить язык на моем устройстве android на немецкий или чешский, и сообщение об исключении все еще было на английском sh, так что это хороший знак.
Обновление: Что касается ответа Стивена C, я изменил условие if на:
if(e instanceof SSLHandshakeException) {
//try again (only once)
...
}
Это не так конкретно c в отношении исключения, но его более безопасно использовать.