Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中进行远程调用时要处理哪些异常_Java_Exception Handling_Java 8 - Fatal编程技术网

在Java中进行远程调用时要处理哪些异常

在Java中进行远程调用时要处理哪些异常,java,exception-handling,java-8,Java,Exception Handling,Java 8,我正在应用程序中进行远程调用。我希望处理不同的异常,并在出现各自的异常时执行不同的任务 我正在研究MalformedURLException、UnknownHostException、ConnectionException和SocketTimeoutException 我知道,如果发生异常,我想放弃这个请求,这个请求相当简单 catch (MalformedURLException e) { log.info("MalformedURLException while fetching l

我正在应用程序中进行远程调用。我希望处理不同的异常,并在出现各自的异常时执行不同的任务

我正在研究MalformedURLException、UnknownHostException、ConnectionException和SocketTimeoutException

我知道,如果发生异常,我想放弃这个请求,这个请求相当简单

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;
}