4

可能であるため、私はこれについて考えていましたが、それが「悪い習慣」と見なされるかどうかを知りたいです。そうだと思いますが、意見を確認するために意見を求めたいと思います。

このようなことをするのは悪いことですか?

try{
    something();
    somethingelse();
        try{
            foo();
            bar();
        }catch(Exception e){
            e.printStackTrace();
        }
    somethingelseagain();
}catch(Exception e){
     e.printStackTrace();
}

とにかく例外をスローするものは最初のキャッチをトリガーするので、これを行う必要は決してないはずだと思います。

ビューは大歓迎です。

4

3 に答える 3

4

あなたの例では、書かれているように、内側のキャッチは少し冗長です。

ただし、ネストされたキャッチは、次のような状況でより多く使用されます。

  • さまざまな例外をキャッチする

  • 2つのキャッチのハンドラーブロックで別のことを行う

  • 内側のcatchが例外をキャッチし、何かを実行してから、outcatchブロックがキャッチできるのと同じ例外を再スローする場合があります

finallyまた、例外がキャッチされた場合でもクリーンアップコードを実行できるブロックの潜在的な使用を忘れないでください。

通常、最も明示的に型指定された(つまり特定の)例外を可能な限りキャッチするようにしてください。

例外の主題は興味深いものであり、論争がないわけではありません。

于 2012-11-22T21:49:02.390 に答える
1

tryステートメントをネストしたいと思う場合は、catchでユーザー入力を要求し、その入力が無効である可能性がある場合です。

于 2012-11-22T21:46:50.053 に答える
0

状況に応じて、ネストtry-catchは完全に正当化されます。たとえばtry、特定のメソッドが特定の例外をスローした場合に、ステップをスキップしてメインから抜け出すことは望ましくありません。他の例外がスローされた場合は、通常の動作が必要です。

于 2012-11-22T22:11:27.337 に答える