Какой класс исключений Java использовать для ошибок HTTP?
Я использую Apache HttpClient и хочу передавать ошибки 9X_jdk HTTP (400 неверный запрос, 404 не найден, 500 9X_openjdk ошибка сервера и т. д.) через механизм исключений 9X_java-libraries Java в вызывающий код. Есть ли исключение 9X_custom-exceptions в стандартной библиотеке Java или в широко 9X_java используемой библиотеке, которое было бы 9X_j2se подходящим для использования или подкласса 9X_java для этой цели?
Альтернативой является проверка 9X_core-java кодов возврата статуса. Это похоже на философию 9X_custom-exceptions дизайна HttpClient, но поскольку эти ошибки 9X_java-se действительно являются исключительными в 9X_java-se моем приложении, я хотел бы, чтобы трассировка 9X_javax стека и другие приятные вещи исключения 9X_java настраивались для меня, когда они происходят.
Ответ #1
Ответ на вопрос: Какой класс исключений Java использовать для ошибок HTTP?
Если это не исключение в философии дизайна 9X_java HttpClient, а исключение в вашем коде, создайте 9X_oraclejdk свои собственные классы исключений. (Как 9X_custom-exceptions подкласс org.apache.commons.httpclient.HttpException)
- если вы не заинтересованы в скорости, т ...
Ответ #2
Ответ на вопрос: Какой класс исключений Java использовать для ошибок HTTP?
Посетите страницу Exception Handling for HttpClient
Чтобы ответить на ваш 9X_custom-exceptions вопрос, похоже, есть класс org.apache.commons.httpclient.HttpException, который, вероятно, подходит.
Если 9X_java-se вам нужен собственный класс исключений для 9X_java-libraries этого, я думаю, что java.io.IOException будет правильным суперклассом 9X_jdk для использования.
Ответ #3
Ответ на вопрос: Какой класс исключений Java использовать для ошибок HTTP?
Быстрый ответ
Весной у вас есть именно то, что вы хотите:
- HttpClientErrorException - Исключение, возникающее при получении HTTP 4xx.
- HttpServerErrorException - Исключение, возникающее при получении HTTP 5xx.
И рекомендуемая практика
Как 9X_openjdk минимум, вы должны отличать исключения, связанные 9X_jdk с бизнес-логикой (например, недостаточный 9X_http баланс, недействительный адрес электронной 9X_j2se почты), от других исключений (например, сервер 9X_oraclejdk недоступен, неподдерживаемый тип мультимедиа, SQLException).
В 9X_exception нашем REST API у нас есть библиотека для 9X_core-java клиентов Java, которая анализирует ответы 9X_exception и выдает только три разных исключения:
- 400, 401, 403, 404, 409, 422: throw
MyBusinessException
, который содержит сообщение, которое может быть показано конечному пользователю. Сообщение приходит в теле ответа (обработка исключений на стороне службы), но если его нет, у нас есть сообщение по умолчанию, специфичное для каждого кода состояния. - 405, 412, 415: выдать
HttpClientErrorException
сообщение, относящееся к каждому коду статуса. - другие коды 4xx: бросьте
HttpClientErrorException
с общим сообщением. - Коды 5xx: бросайте
HttpServerErrorException
с общим сообщением.
Все эти исключения не отмечены.
Ответ #4
Ответ на вопрос: Какой класс исключений Java использовать для ошибок HTTP?
Я бы сказал, это зависит от того, для чего 9X_java-libraries вы используете HTTPClient. Например, SDK 9X_java PayPal использует HttpClient для передачи 9X_core-java вызовов API на сервер PayPal, но не может 9X_http проверить код ответа HTTP, когда это будет 9X_javax сделано. Я пропатчил свою копию так, что 9X_custom-exceptions если код ответа не 200, он генерирует исключение 9X_jre PayPal FatalException с соответствующим 9X_.java сообщением. Это потому, что вызывающего 9X_jre абонента не интересует HTML или какие-либо 9X_java детали этого сообщения HTTP, и его даже 9X_.java не интересует тот факт, что мы используем 9X_http HTTP в качестве транспорта. Если вызов успешен, то 9X_exceptions тело ответа содержит детали транзакции, которые 9X_exception-handling извлекаются и помещаются в объект ответа; в 9X_http противном случае он содержит бесполезный 9X_javax HTML. В этом случае HTTP - это просто транспорт, поэтому 9X_exception определенные коды ответов указывают на ошибки, о 9X_javax которых можно сообщить с помощью исключений. Поскольку 9X_java это часть SDK PayPal, я использовал класс 9X_oraclejdk исключения PayPal. В какой-нибудь другой 9X_jdk системе или библиотеке я бы использовал 9X_j2se подтип любых исключений, которые эта библиотека 9X_exception-handling уже использует. Например, если бы я писал 9X_java-libraries библиотеку GMail, которая обращается к учетным 9X_exceptions записям GMail, я бы, вероятно, создал класс 9X_java-api GMailException и подкласс для различных 9X_exception-handling типов исключений, с которыми сталкивается 9X_custom-exceptions библиотека. В качестве альтернативы вы можете 9X_custom-exceptions использовать что-нибудь вроде IOException.
Причина, по 9X_java-api которой HttpClient заставляет вас проверять 9X_exceptions коды ответов, заключается в том, что ответ 9X_j2se может быть полезен, даже если код ответа 9X_http не равен 200. Некоторые веб-сайты помещают 9X_java-se полезный текст на страницу 404, предоставляя 9X_openjdk пользователю что-то полезное, или выполняя 9X_exception поиск форму или просто полезное сообщение 9X_.java об ошибке. В зависимости от вашего варианта 9X_j2se использования вы можете просто показать 9X_java-api содержимое ответа, а не генерировать исключение.
Ответ #5
Ответ на вопрос: Какой класс исключений Java использовать для ошибок HTTP?
Я обнаружил это исключение в Apache HTTP 9X_custom-exceptions Client 4.5.7:
... import org.apache.http.client.HttpResponseException; ... StatusLine statusLine = response.getStatusLine(); if(statusLine.getStatusCode() != 200) { throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase()); } ...
Пример результата:
Exception in thread "main" org.apache.http.client.HttpResponseException: status code: 400, reason phrase: Bad Request
Ответ #6
Ответ на вопрос: Какой класс исключений Java использовать для ошибок HTTP?
Есть org.apache.commons.httpclient.HttpException, если вам нужно исключение библиотеки. Мы 9X_custom-exceptions также иногда создавали свои собственные 9X_exception-handling для определенных целей, создавая как исключение 9X_exception для определенных кодов состояния HTTP, так 9X_http и общее исключение для неожиданного кода 9X_exceptions состояния.
- HttpException - это подкласс ...
-
3
-
2
-
2
-
2
-
2
-
2
-
20
-
16
-
6
-
22
-
20
-
6
-
9
-
30
-
7
-
29
-
2
-
13
-
2
-
15
-
16
-
7
-
4
-
3
-
4
-
7
-
6
-
6
-
8
-
30
-
4
-
5
-
9
-
7
-
8
-
3
-
9
-
4
-
9
-
9
-
9
-
8
-
22
-
7
-
9
-
9
-
3
-
9
-
7
-
6