execute(HttpHost target, HttpRequest request)
方法的Apache HttpClient docs说:
IOException - 如果出现问题或连接中止
如果我发现IOException,这会抓住所有 Server 5xx Errors吗?
try {
response = client.execute(httpHost, request);
} catch (IOException e) {
// throw custom Exception
} finally {
// close response and client
}
我问的原因是,在这个逻辑之后的其他地方,我们会做以下事情:
if (response.getStatusLine().getStatusCode() >= 500) {
// Could we ever reach this point after the code above?
}
答案 0 :(得分:10)
不, HttpClient 不会为任何 500 / 5xx响应抛出 IOException。
当低级别连接失败(例如,无效的主机名,没有服务器侦听)或TCP管道异常中断(例如,互联网连接丢失)时,仅发生 。
'HTTP 500'是服务器响应 - 有效服务器响应 - 表示错误情况。它有状态代码,标题和正文,这是200响应的所有内容。
文档说返回值是“对请求的[最终]响应”;只要服务器能够返回 有效响应,无论状态代码如何都是如此。