IOException перехватил клиентскую часть при возврате кода ошибки http - PullRequest
1 голос
/ 29 февраля 2012

У меня есть отдельное Java-приложение, которое предоставляет два метода через интерфейс: get - для выполнения запросов GET к URL-адресу и post - для выполнения запросов POST к URL-адресу.Я использую чистую Java для реализации методов (без HTTP-клиента Apache).

Моя проблема в том, что при возврате HTTP-ошибки с сервера я получаю IOException на стороне клиента (для всех кодов> = 400).Не имеет смысла спорить, является ли это правильным поведением (ИМХО, это не так).В любом случае мне нужно проверить, была ли исключительная ситуация IOException вызвана проблемой соединения или ошибкой HTTP, так как я должен реализовать различные способы поведения для этих двух ситуаций.Кто-нибудь знает достойное решение, чтобы проверить это?(Под порядочным я имею в виду отсутствие необходимости проверять сообщение об исключении «Сервер вернул код ответа HTTP»)

Любые идеи действительно приветствуются.

Спасибо.

1 Ответ

3 голосов
/ 29 февраля 2012

Вы мало что можете сделать, кроме разбора строки исключения. Если вы посмотрите в источнике HttpURLConnection:

            if (respCode >= 400) {
                if (respCode == 404 || respCode == 410) {
                    throw new FileNotFoundException(url.toString());
                } else {
                    throw new java.io.IOException("Server returned HTTP" +
                          " response code: " + respCode + " for URL: " +
                          url.toString());
                }
            }

вы увидите, что это не очень полезно.

...