我必须下载一些URL,并且在操作过程中可能会发生一些异常,例如java.net.NoRouteToHostException
。我认为这是一个临时的错误例外,因为如果您在一段时间后重试它,下载可以成功。
所以,我想捕捉所有与临时错误有关的例外情况,并且我已经开始使用这些例外情况:java.net.NoRouteToHostException
,java.net.SocketException
您能否列出其他例外情况?捕获临时网络错误导致的异常
回答
java.net.SocketException
是java.net.NoRouteToHostException
的母公司,所以你可能只捕获父母。 SocketException
的其他孩子是BindException
,ConnectException
和PortUnreachableException
。也许可以只捕获SocketException
在你的情况下...
由于@reef已经说过java.net.NoRouteToHostException exntends java.net.SocketException,所以如果你捕获java.net.SocketException就足够了。但java.net.SocketException扩展IOException,我认为这是你应该捕捉的。所有的IO问题都应该抛出这个异常。
HttpRetryException是另一个。也许在java.net中没有扩展SocketException的所有东西?
一个快速(非常脏)的方式可能是
try {
....
} catch(Exception e) {
if(e.getClass().getPackage().getName().equalsIgnoreCase("java.net")) {
retry();
}
}
但是,你可能不想把'java.net.MalformedURLException'视为临时网络错误。 – satur9nine 2016-04-28 00:06:18
一种模式有时它是有用用于暂时性错误的重试的操作处理是定义一个错误回调接口和实现一些类它;当发生错误时,让回调对象知道,并让它决定是否抛出异常或应该重试该操作。由于现有的通信类不遵循这种模式,因此可能需要捕捉它们的例外情况并将其转化为回调。
请注意,与正常的异常处理相比,此方法可以更轻松地处理许多错误处理场景。除此之外,它可以很容易地设置可以尝试多少次重试,可能需要多长时间等的策略,并且还提供了一种在接收到类似“取消”请求时跳过未来重试的方法。
- 1. 致命错误:未捕获异常PAYPAL
- 2. 致命错误:未捕获异常'Google_IOException'
- 3. 捕获ftplib中的连接错误导致的异常
- 4. executeFetchRequest:错误:导致一个未捕获的异常'NSRangeException'
- 5. getImageData导致“未捕获的错误:NOT_SUPPORTED_ERR:DOM异常9”
- 6. 致命错误:未捕获的异常“异常”有消息“的
- 7. 致命错误:未捕获的异常“异常”有消息“1048
- 8. 致命错误:未捕获的异常“异常”
- 9. PHP致命错误:未捕获的异常“异常”有消息
- 10. 致命错误:在PHPExcel类未捕获的异常“异常”
- 11. 致命错误:未捕获的异常“异常”
- 12. 未捕获的错误:网络错误
- 13. 错误Smarty的 - 致命错误:未捕获的异常
- 14. 致命错误:在wordpress中未捕获异常'异常'? woocommerce 3.0
- 15. 致命错误:未捕获异常'Zend \ ServiceManager \异常
- 16. 异常导致RunTime错误
- 17. 致命错误:未捕获的异常“异常”有消息“HTTP错误(60)
- 18. 致命错误:未捕获的异常“异常”有消息“日期时间::
- 19. 捕获异常/错误
- 20. 捕获错误或异常
- 21. 致命错误:未捕获SoapFault异常:[env:Client]内部错误
- 22. 致命错误:未捕获SoapFault异常:[HTTP]错误请求
- 23. PHP致命错误,未捕获错误异常
- 24. 错误导入excel到mssql。 “致命错误:未捕获异常'com_exception'与消息”
- 25. 在Blackberry中使用网络服务时未捕获的异常
- 26. PHP致命错误:未捕获的异常“的Symfony \分量\ YAML \异常\ ParseException的”
- 27. 致命错误:未捕获的异常 '的RuntimeException'
- 28. Zend的致命错误未捕获的异常“Zend_Loader_PluginLoader_Exception”有消息
- 29. 网络上的日志异常错误
- 30. jQuery的未捕获的异常错误
java.net.SocketException是java.net.NoRouteToHostException的父亲,因此您可能只捕获父级。 SocketException的其他childs是BindException,ConnectException和PortUnreachableException。也许这只是在你的情况下只捕获SocketException ... – reef 2011-02-24 15:40:41
添加我的评论作为答案 – reef 2011-02-24 15:47:01