我必須下載一些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