Поймать тайм-аут соединения и страница не найдена исключение? - PullRequest
0 голосов
/ 02 ноября 2018

Я использую сторонний API для получения аутентификации пользователя весной. Мне нужно перехватить исключения, возникающие при попытке подключиться к этому API, например, время ожидания соединения и страница не найдена (если их сервер не работает). Прямо сейчас я пытаюсь сделать это с кодом ниже. Достаточно ли этого, чтобы поймать эти исключения?

public boolean userAuthentication(String userName) {
    try {
         if(hasAccess(userName)) {
            return true;
         } else {
            return false;
         }
    } catch (IOException e) {
         logger.info("exception occured "+ e);
         return false;
    }
}

Здесь hasAccess - сторонний API, я не могу изменить этот метод. Принимая во внимание, что я должен поймать эти исключения и дать соответствующий ответ пользователю.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

hasAccess (String) определяет какой-либо оператор throws?

Определяет ли это, что оно вызывает IOException?

Есть ли у вас доступ к исходному коду этого метода? Если вы это сделаете, то можете пойти и проверить, обрабатывают ли они какие-либо выданные исключения или перезапускают любые исключения времени выполнения.

Чтобы быть на более безопасной стороне, вы должны ловить исключения во время выполнения, поскольку ошибка непредсказуема для вас, чтобы вы могли корректно обрабатывать ошибки.

0 голосов
/ 02 ноября 2018

Невозможно определить, достаточно ли этого, не взглянув на реализацию hasAccess(), поскольку именно эта функция выдаст ошибку.

Однако, если вам действительно нужно перехватить это исключение, вы всегда можете использовать

try {
    if (hasAccess(userName)){}
} catch (Exception e) {
    //caught
}

Это не всегда хорошая практика, так как исключение поймает каждое исключение, но это решение, если вы ищете его.

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