2017-06-27 8 views
0

私は3種類の例外e1、e2、e3を投げることができる関数を持っています。したがって、この関数には例外を処理する2つの方法があります。どちらが良い方法で、なぜですか?例: -例外を処理する方法が改善されました

public void func() { 

    block1 starts 

    block1 ends 
    e1 can thrown from block1 

    block2 starts 

    block2 ends 
    e2 can thrown from block2 

    block3 starts 

    block3 ends 
    e3 can thrown from block3 
} 

だから、今、私は2つの方法で例外を処理することができます - 1. 3つの異なるブロックのための3種類のトライキャッチを入れてください。 2. 3つのブロックすべてに1回の試行を行い、例外ごとに3回のキャッチを行います。

これは、これを行うより良い方法と考えられていますか?

+2

は、独自のメソッドにすべてのブロックを移動するために検討し、それが複数のことをやっている方法のFUNCのように見えます! –

+0

あなたは自分のメソッドでそれらの例外を個別にtry-catchまたはスローすることができます –

+0

@ΦXocę笑Пepeúpaツ次回コメントを編集してください。 この質問はhttps://codereview.stackexchange.com/に属していませんか? –

答えて

1

Exceptionの効果によって異なります。

  • すべての例外がそれ以上の処理に影響しない場合は、各例外ポイントを個別のtry-catchブロックに入れます。したがって、1つの例外が発生した場合、この例外の影響を受けないコード行を実行することができます。
  • さらなる処理に影響を与えるすべての例外を、単一のtry-catchブロックに入れて、見やすさと読みやすさを向上させます。またこれを行うことにより、ブロックtry-catchを削除します。他の点では、ネストされたtry-catchのブロックと非常に複雑なロジックを作成する必要があります(この場合、さらに実行を停止する必要があるため)。
0

各例外を別々に処理したい場合は、複数のキャッチを実行しますが、スタックトレースを出力するためだけに例外をキャッチして実行を続行する場合は、複数の例外を除いてキャッチします。このような

0

何かが最も柔軟性のようになります。

public void block1() throws e1 { 
    try { 
    ... 
    } catch (e12) { 
     throw new e1(e12); 
    } 
} 

public void block2() throws e2 { 
    similar to block1 
} 

public void block3() throws e3 { 
    similar to block1 
} 

public void func() { 
    try { 
     block1(); 
     block2(); 
     block3(); 
    } catch (stuff) { 
     stuff if you need it. 
    } 
} 
関連する問題