如何处理jersey client 1.8中读取超时异常
How to handle read timeout exception in jersey client 1.8
我正在使用jersey 1.8
调用外部服务。
这是我的代码。
try{
ClientResponse response = webResource.header(HttpHeaders.AUTHORIZATION, encodedHashString).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, formData);
}catch(ClientHandlerException che){
//handelling code here
{
当发生读取超时异常时,它给出 ClientHandlerException
并且底层异常是 SocketTimeoutException
。但这里的问题是我不能只说因为它 ClientHandlerException
它是一个超时异常,因为这个异常可能发生在其他与客户端相关的错误上。
处理它的确切代码是什么,如果它是读取超时异常,我需要做一些处理。
尝试这样的事情:
try {
ClientResponse response = webResource.header(HttpHeaders.AUTHORIZATION, encodedHashString).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, formData);
} catch(ClientHandlerException ex) {
handleClientHandlerException(ex);
}
private void handleClientHandlerException(ClientHandlerException ex) throws ClientHandlerException {
if (ex.getCause() instanceof SocketTimeoutException) {
// handelling SocketTimeoutException code here
}
throw ex;
}
在 handleClientHandlerException
中,如果原因不是 SocketTimeoutException
,您也可以从 apache commons lang 中尝试类似 ExceptionUtils#getRootCause 的方法来获取根本原因。
您可以使用 guava 中的 Throwables.getRootCause 方法!
我正在使用jersey 1.8
调用外部服务。 这是我的代码。
try{
ClientResponse response = webResource.header(HttpHeaders.AUTHORIZATION, encodedHashString).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, formData);
}catch(ClientHandlerException che){
//handelling code here
{
当发生读取超时异常时,它给出 ClientHandlerException
并且底层异常是 SocketTimeoutException
。但这里的问题是我不能只说因为它 ClientHandlerException
它是一个超时异常,因为这个异常可能发生在其他与客户端相关的错误上。
处理它的确切代码是什么,如果它是读取超时异常,我需要做一些处理。
尝试这样的事情:
try {
ClientResponse response = webResource.header(HttpHeaders.AUTHORIZATION, encodedHashString).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, formData);
} catch(ClientHandlerException ex) {
handleClientHandlerException(ex);
}
private void handleClientHandlerException(ClientHandlerException ex) throws ClientHandlerException {
if (ex.getCause() instanceof SocketTimeoutException) {
// handelling SocketTimeoutException code here
}
throw ex;
}
在 handleClientHandlerException
中,如果原因不是 SocketTimeoutException
,您也可以从 apache commons lang 中尝试类似 ExceptionUtils#getRootCause 的方法来获取根本原因。
您可以使用 guava 中的 Throwables.getRootCause 方法!