2012-01-10 11 views
1

このメソッドは以下のメソッドを呼び出しています。接続するURLに誤ったポート番号を指定しています。 私の驚いたことに、生成された例外は、最初のメソッドcatchブロックで捕捉されています なぜexecuteDataメソッドのcatchブロック内で処理されないのですか?あなたのラインJava:2番目のメソッドキャッチブロック内で例外がキャッチされないのはなぜですか?

// some code 

がキャッチされた別の例外を生成するので、おそらくです

**1st Method** 
public APIResponse execute(Request request, Class<? extends Response> responseClass) { 
     try { 
     String xmlResponse = executeData(request); 
        // some code 
     return response; 
     } 
     catch (Exception ex) { 

      return new Response(ErrorCode.SYSTEM_ERROR); 
     } 
    } 

2nd Method 
public String executeData(Request request) throws IOException { 
     URL url = null; 
     URLConnection urlc = null; 
     try { 
      url = new URL("http://localhost:80870/"); 
      urlc = url.openConnection(); 

     } 
     catch (Exception ex) { 
     ex.printStackTrace(); 
**// This is not being executed .** 
     } 

          // Some code 
        // Some code 
     return xmlResponse; 
    } 
+0

あなたは本当にnothin executeData例外ハンドラのgは、実行中にコメントアウトしたコードの結果を見る前に例外をスローしますか? –

+0

'throws IOException'を2番目のメソッドから削除すると機能しますか? – Viruzzo

+0

@Viruzoは、私がスローを取り除く場合には役に立ちません – Kiran

答えて

1

。 2番目のメソッドは例外をスローしません。

connection.connect(); 

例外がスローされます。

また、ステータスをチェックすることもできます

int responseCode = connection.getResponseCode(); 
if (responseCode != 200) { 
    // Not OK. 
} 
+0

urlc.getOutputStream()でエラーが発生しました。ありがとう。 – Kiran

0

私は例外が

// executeDataでcatchブロックの後にいくつかのコード //何らかのコード

に発生したと思います

+0

なぜ以前のキャッチブロックでのみ処理する必要があるので気にする必要がありますか? – Kiran

+0

残念ですが、それが後で発生した場合、以前のキャッチブロックでどのように処理できますか? executeDataのtryブロックで例外が発生したことをどのように知っていますか? – ichaki5748

+0

問題は、url.openConnection()がエラーを起こすために発生しましたが、urlc.getOutputStream()でエラーが発生しません。とにかく助けを求めるthnks。 – Kiran

関連する問題