Ste*_*wig 24 java exception http
我正在使用Apache HttpClient,并希望通过Java异常机制将HTTP错误(400 Bad Request,404 Not Found,500 Server Error等)传达给调用代码.Java标准库或广泛使用的库中是否存在异常,以便为此目的使用或子类化?
另一种方法是检查状态返回码.这似乎是HttpClient的设计理念,但由于这些错误在我的应用程序中确实非常出色,我希望在它们发生时为我设置堆栈跟踪和其他好的异常事项.
asa*_*n74 11
如果它不是HttpClient设计哲学中的异常,而是代码中的异常,则创建自己的异常类.(作为org.apache.commons.httpclient.HttpException的子类)
查看HttpClient异常处理页面
要回答你的问题,虽然似乎有一个org.apache.commons.httpclient.HttpException类可能是一个很好的选择.
如果你确实需要一个自定义异常类,我认为java.io.IOException将是正确使用的超类.
在春天你究竟你想要什么:
至少,您应该将与业务逻辑相关的异常(例如,余额不足、电子邮件地址无效)与其他异常(例如,服务器不可用、不受支持的媒体类型、SQLException)区分开来。
在我们的 REST API 中,我们有一个 Java 客户端库,用于解析响应并仅抛出三种不同的异常:
MyBusinessException,其中包含可以显示给最终用户的消息。消息出现在响应正文中(服务端的异常处理),但如果不存在,我们有一个特定于每个状态代码的默认消息。HttpClientErrorException特定于每个状态代码的消息。HttpClientErrorException通用消息。HttpServerErrorException通用消息。所有这些异常都未经检查。
我在 Apache HTTP 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());
}
...
Run Code Online (Sandbox Code Playgroud)
结果样本为:
Exception in thread "main" org.apache.http.client.HttpResponseException: status code: 400, reason phrase: Bad Request
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41562 次 |
| 最近记录: |