ネットワーキングコードは、不明なHostexceptionをスローすることがあります

StackOverflow https://stackoverflow.com/questions/2906745

  •  04-10-2019
  •  | 
  •  

質問

サーバーからのデータを試みています。時々、私のコードがANのために失敗します UnknownHostException. 。何故ですか?この問題の原因は何ですか?

役に立ちましたか?

解決

これは、DNSサーバーのしゃっくりが発生した場合に発生する可能性があります。 DNSサーバーをより堅牢にするか、別のサーバーを探していることとは別に、ホスト名の代わりに完全なIPアドレスを使用することもできます。これにより、ホスト名に基づいてIPアドレスを検索する必要はありません。ただし、IPアドレスが時々変更される可能性があるため、DNSの問題を修正し、DNSを好みます。

他のヒント

an UnknownHostException 指定されたホストをIPアドレスに翻訳できなかったことを示します。 DNSサーバーの問題になる可能性があります。

DNS解像度が断続的に失敗した場合は、例外をキャッチし、名前の解決が得られるまで再試行してください。制御できるもののみを制御できます...そして、DNSサーバーを制御/修正できない場合は、風変わりなDNSサーバーを処理するのに十分なほどアプリを堅牢にします。

私も、明らかな理由もなくJavaで散発的な不明者を見ています。解決策は、数回再試行することです。これを行うdocumentbuilder.parseのラッパーは次のとおりです。

static Document DocumentBuilder_parse(DocumentBuilder b, String uri) throws SAXException, IOException {
  UnknownHostException lastException = null;
  for (int tries = 0; tries < 2; tries++) {
    try {
      return b.parse(uri);
    } catch (UnknownHostException e) {
      lastException = e;
      System.out.println("Retrying because of: " + e);
      continue;
    }
  }
  throw lastException;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top