2017-06-16 4 views
2

私はnetbeansのTopComponentでWorldWindGlCanvasを使用しています。一番上のコンポーネントが開かれているときWorldWIndいくつかのURLに接続しようとします(たとえばworldwind20.arc.nasa.gov)。インターネットに接続されていない場合、UnknowHostExceptionが発生し、この例外を示すダイアログが表示されます。 この例外をキャッチしたいと思います。私は、worldwindがオフラインで動作し、オフラインで作業するように設定できることを知っていることに注意してください。インターネット接続が提供されているときにオンラインタイルを使用し、インターネット接続がない場合はキャッシュタイルを使用するようにworldwindをオンラインに設定します。 この例外をキャッチする方法はありますか?NetbeansのWorldWindJava 2.1のRetrievalUrlのUnknownHostExceptionをキャッチ

答えて

1

World Windのソースコードを見ると、その例外をキャッチする方法はないようです。

が手動で私のインターネット接続を切断すると、私は次のスタックトレース受け取っ:

URLRetriever.java:

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) 

そのスタックトレースをもとに、私はいくつかのソースファイルを調査しました

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

関連する問題