7

UnknownHostException私のコードのメソッドの1つが例外をスローします

私は最初にcatchこのようなブロックを持っていました:

catch (Exception e) {
  // TODO Auto-generated catch block
  System.out.println("Custom Message "+e.getMessage());
  if(e instanceof java.net.UnknownHostException){
      System.out.println("Unknown Host Ex");
  }else{
      System.out.println("OTHER ERROR");
  }
}

ifその条件がtrueと評価されないため、ホストエラーがあることを出力できないという問題に直面しています。

あなたは私がsysoutこれを印刷する直前に持っているのを見ることができます:

Custom Message ; nested exception is: 
    java.net.UnknownHostException: abc.xyz

その後、処理するために別のキャッチブロックを作成しましUnknownHostExceptionたが、それでもキャッチされません。

4

2 に答える 2

12

まあ、どうやらあなたUnknownHostExceptionは他のいくつかの例外に包まれています。言い換えれば、上記のいくつかのコードはキャッチUnknownHostExceptionしてスローします:

throw new SomeOtherException("Custom Message", unknownHostEx);

印刷e.getClass()して、どのような種類の例外がラップされているかを確認します。次のことも試すことができます。

if(e.getCause() != null && e.getCause() instanceof UnknownHostException)

しかし、それは醜いです。

ところで、使用を避けて、例外自体を理解さinstanceofせる必要catchがあります(ただし、あなたの場合は役に立ちません):

catch (java.net.UnknownHostException e) {
      System.out.println("Unknown Host Ex");
}
catch (Exception e) {
      System.out.println("OTHER ERROR");
}
于 2012-11-23T09:18:08.260 に答える
2

UnknownHostExceptionは別のインスタンス内にネストされているExceptionため、インスタンスではない可能性がありますが、含まれているだけです。あなたは最終的にチェックするかもしれませんe.getCause()

于 2012-11-23T09:18:17.293 に答える