6
try:
    #statement 1
    #statement 2
except Exception, err:
    print err
    pass

これは非常に些細なことかもしれませんが、今まで実際に考えたことがなく、次の質問に答えることができないことに気付きました。

  1. ステートメント 1 でエラーが発生した場合、ステートメント 2 は実行されますか?

  2. ステートメント 1 とステートメント 2 の両方でエラーが発生した場合、Exception はどのように処理しますか? 上記のコードで出力されるエラーはどれですか? 両方?

4

5 に答える 5

4

try例外が発生すると、制御は例外が発生した時点でブロックを離れ、適切なexceptブロックに渡されます。ステートメント 1 が例外をスローすると、ステートメント 2 は実行されません。

これは、2 番目の質問にも答えます。説明したシナリオが発生することはありません。

于 2013-10-25T14:54:33.770 に答える
4

1) ステートメント 1 でエラーが発生した場合、ステートメント 2 は実行されますか?

いいえ。例外が発生してキャッチされます。私が理解しているように、Pythonはスタックを上に移動し、呼び出し元で例外ハンドラーを探します

2) ステートメント 1 とステートメント 2 の両方でエラーが発生した場合、Exception はどのように処理しますか? 上記のコードで出力されるエラーはどれですか? 両方?

ステートメント 2 は実行されないため、例外は発生しません。

tryブロックからのすべての例外がキャッチされます。そのため、すべてのtry/except句について、try 句を必要最小限のコードに制限します。繰り返しますが、これによりバグのマスキングが回避されます。

于 2013-10-25T14:54:45.580 に答える
3

1) ステートメント 1 でエラーが発生した場合、ステートメント 2 は実行されますか?

いいえ、ステートメント2は実行されません

2) ステートメント 1 とステートメント 2 の両方でエラーが発生した場合、Exception はどのように処理しますか? 上記のコードで出力されるエラーはどれですか? 両方?

ステートメント 1 だけがエラーを発生させる可能性があります。上記を参照してください。

finally注: ステートメント 2 を常に実行する場合は、try/except を使用できます。

于 2013-10-25T14:54:25.437 に答える