Обработка исключений для исключения сокета - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужно делать разные вещи в зависимости от того, какое исключение я поймаю, вот два метода, которые я выучил, которые можно использовать:

Метод1:

 try{
    ..
    ..
    }catch(SocketTimeoutExceptione){
     //do something
    }
    catch(RunTimeException e){
    //do something
    }

Метод 2:

try{
}
catch(RunTimeException e){
if (e instanceof SocketTimeoutException) {
                 LOGGER.error(e);   

            }else {
                LOGGER.error(e);
                //do something
            }
}

Я получаю следующее исключение, которое является известной проблемой с подключением: Возникло исключение org.springframework.web.client.ResourceAccessException: ошибка ввода-вывода при выполнении запроса POST для «теста»: истекло время ожидания;Вложенное исключение - java.net.SocketTimeoutException: Тайм-аут чтения

Метод 1 недопустим, так как он все равно войдет в блок исключения времени выполнения.В методе 2 я не могу проверить, является ли это экземпляром исключения во время выполнения, так как исключение сокета не является его частью.Как мне справиться с этим в этом случае

1 Ответ

0 голосов
/ 25 февраля 2019
java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.lang.RuntimeException
        org.springframework.core.NestedRuntimeException
          org.springframework.web.client.RestClientException
            org.springframework.web.client.ResourceAccessException

Это иерархия классов исключений.Я думаю, что если вы попытаетесь поймать ResourceAccessException вместо SocketTimeoutException, все будет в порядке.Но когда catch не может найти конкретное исключение, если он может отловить свои классы супер исключений, он обнаруживает, что в вашем случае это RuntimeException.

Ref: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/ResourceAccessException.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...