1

次のコードがあります

    try {
        // code
    } catch (Exception1 e1) {
        if (condition) {
            //code
        } else {
            throw e1;
        }
    } catch (Exception2 e2) {
        if (condition) {
            //code
        } else {
            throw e2;
        }
    }

プライベート メソッドを使用して、両方のキャッチで if-else ブロックをモジュール化するにはどうすればよいですか。

より具体的には、メソッドを使用する場合、さまざまな例外をメソッドに渡し、それらを適切にスローする方法は?

このリンクをたどりましたが、正しい例外を渡したりスローしたりする方法がわかりませんでした。

4

4 に答える 4

7

Java 7 を使用している場合は、新しいパイプ構文を使用できます。

catch (Exception1|Exception2 e)
{
  if(condition) {
    //code
  } else {
    throw e;
  }
}
于 2013-05-28T22:18:57.010 に答える
2

if/elseこれは、 をメソッドに 入れるのと同じくらい簡単です。

try {
    // code
} catch (Exception1 e1) {
    logic(e1);
} catch (Exception2 e2) {
    logic(e2);
}


private void logic(Exception e) throws Exception {
    if (condition) {
        //code
    } else {
        throw e;
    }
}
于 2013-05-28T22:18:33.950 に答える
0

人々が投稿する回答で確実にしたい唯一のことは、例外1を例外2のスーパークラスにする必要があることです。それ以外の場合はコンパイルされません。以下のJava 7の回答は、私が説明したように、それを処理するための最良の方法であり、順序の問題です

Java 7 の変更点のリストについて

http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html

于 2013-05-28T22:20:25.387 に答える