在Java中进行远程调用时要处理哪些异常
我正在应用程序中进行远程调用。我希望处理不同的异常,并在出现各自的异常时执行不同的任务 我正在研究MalformedURLException、UnknownHostException、ConnectionException和SocketTimeoutException 我知道,如果发生异常,我想放弃这个请求,这个请求相当简单在Java中进行远程调用时要处理哪些异常,java,exception-handling,java-8,Java,Exception Handling,Java 8,我正在应用程序中进行远程调用。我希望处理不同的异常,并在出现各自的异常时执行不同的任务 我正在研究MalformedURLException、UnknownHostException、ConnectionException和SocketTimeoutException 我知道,如果发生异常,我想放弃这个请求,这个请求相当简单 catch (MalformedURLException e) { log.info("MalformedURLException while fetching l
catch (MalformedURLException e) {
log.info("MalformedURLException while fetching log");
log.info("Content Url is Invalid and is being Dropped");
return keywords;
}
现在,在互联网断开的情况下,我想在一个小间隔后重试请求。这里我应该处理哪个异常
我混淆了ConnectException和UnknownHostException
接下来我使用con.setConnectTimeout20000;和con.setReadTimeout30000;在我的代码中。所以我猜如果这个过期,那么我可以处理SocketTimeoutException
我是否正确处理问题并使用正确的异常?如果我遗漏了什么,请告诉我。当没有连接时,ConnectException和UnknownHostException都可能发生。当DNS缓存中没有条目时发生UnknownHostException,当DNS缓存中有条目但无法访问主机时发生ConnectException
只需捕获IOException并重试,但不是永远重试,而是增加暂停时间并在一段时间后放弃
唯一的特殊情况是无效的URL或来自服务器的永久性错误,如无效身份验证,…。但IOException可能由于许多原因而发生。我想处理一个常规异常,比如IOException或just exception,以执行不同的任务。所以我应该同时处理ConnectException和UnknownHostException的IOException,然后捕获异常以进行更一般的处理吗?你有什么建议?
catch (UnknownHostException e) {
log.info("UnknownHostException while fetching log");
log.info("Internet disconnectivity Retrying Content Url");
keywords.add(value);
Thread.sleep(1000);
return keywords;
}
catch (SocketTimeoutException e) {
log.info("SocketTimeoutException while fetching log:");
keywords = increaseRetryCount(keywords, result, retryCount, url);
return keywords;
}