使用java.net.Socket.connect()
時,拒絕連接和超時都會導致ConnectException
。區分連接被拒絕和連接超時
java.net.ConnectException: Connection timed out: connect
java.net.ConnectException: Connection refused: connect
我該如何安全區分這兩者?肯定解析錯誤消息來完成這項工作。但是當這個消息在未來的Java版本中發生變化時,我倒黴了。
大圖:我正在使用帶有Metro實現的JAX-WS編寫web服務客戶端。當Web服務調用失敗時,我想清楚地報告失敗原因,以便快速解決問題。
回退是一個可接受的解決方案。 – 2010-07-29 15:22:05
我喜歡這個答案,但保持我以前的建議:將其抽象化!你想要做的最後一件事是在你不能依賴的界面上進行一系列不一致和重複的檢查。創建一個對你有意義的界面,並將細節抽象出來。如果有任何更改,您不想編輯一打文件。 – riwalk 2010-07-30 03:51:08