2017-06-16 97 views
2

我在netbeans TopComponent中使用WorldWindGlCanvas。當頂部組件打開時WorldWInd嘗試連接到某個網址(例如worldwind20.arc.nasa.gov)。如果沒有互聯網連接UnknowHostException發生,並顯示一個對話框顯示此異常。 我想抓住這個例外。請注意,我知道worldwind可以脫機工作,我可以將它設置爲脫機工作,但我想設置worldwind聯機,以便在提供Internet連接時使用聯機切片,並且在沒有Internet連接時使用緩存切片。 有什麼辦法可以解決這個問題嗎?在Netbeans的WorldWindJava 2.1中捕獲RetrievalUrl的UnknownHostException

回答

1

查看World Wind的源代碼,似乎沒有辦法捕獲該異常。

在手動斷開Internet連接,我收到了以下的堆棧跟蹤:

Jun 16, 2017 6:19:43 PM 
gov.nasa.worldwind.util.SessionCacheRetrievalPostProcessor run 
SEVERE: Retrieval failed for https://worldwind26.arc.nasa.gov/elev?EXCEPTIONS=application/vnd.ogc.se_xml&REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0 
Jun 16, 2017 6:19:43 PM gov.nasa.worldwind.util.SessionCacheUtils retrieveSessionData 
SEVERE: Exception while retrieving resources for https://worldwind26.arc.nasa.gov/elev?EXCEPTIONS=application/vnd.ogc.se_xml&REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0 
java.net.UnknownHostException: worldwind26.arc.nasa.gov 
... 
at gov.nasa.worldwind.retrieve.HTTPRetriever.doRead(HTTPRetriever.java:48) 
at gov.nasa.worldwind.retrieve.URLRetriever.read(URLRetriever.java:368) 
at gov.nasa.worldwind.retrieve.URLRetriever.call(URLRetriever.java:244) 
at gov.nasa.worldwind.retrieve.URLRetriever.call(URLRetriever.java:27) 
at gov.nasa.worldwind.util.SessionCacheUtils.retrieveSessionData(SessionCacheUtils.java:80) 
at gov.nasa.worldwind.util.SessionCacheUtils.getOrRetrieveSessionCapabilities(SessionCacheUtils.java:170) 
at gov.nasa.worldwind.terrain.BasicElevationModel.retrieveResources(BasicElevationModel.java:2028) 
at gov.nasa.worldwind.terrain.BasicElevationModel$3.run(BasicElevationModel.java:2118) 
at java.lang.Thread.run(Thread.java:745) 

基礎上堆棧跟蹤,我調查了一些源文件:

URLRetriever.java:

try { 
     ... 
} catch (Exception e) { 
     if (!(e instanceof java.net.SocketTimeoutException || e instanceof UnknownHostException 
      || e instanceof SocketException)) { 
       Logging.logger().log(Level.SEVERE, 
       Logging.getMessage("URLRetriever.ErrorReadingFromConnection", this.url.toString()), e); 
     } 
     throw e; 
} 

SessionCacheUtils.java:

​​

它似乎在內部處理,因此你似乎運氣不好。

+0

謝謝@frenchDolphin。我已經看到你提到的代碼。我注意到(在我的問題的標題),該例外是從URLRetriever。你相信沒有辦法來處理這個異常? –

+0

據我所知,還是從WWD的經驗來看,都不好說。 – frenchDolphin

相關問題