1. ホーム
  2. python

[解決済み] Pythonのtry-else

2022-03-14 04:29:25

質問

オプションの else の節は try ステートメントを使用しますか?

どのように解決するのですか?

の文は else ブロックは、実行が try - 例外が発生しなかった場合 正直なところ、必要性を感じたことはない。

しかし。 例外処理 をメモしておきます。

else 節の使用は、より良いものです。 にコードを追加するよりも、try 節を使用すると、誤って キャッチしていない例外を で保護されているコードによって発生します。 try ... except ステートメントを使用します。

そのため、例えば、あるメソッドで IOError が発生する例外をキャッチしたいが、最初の操作が成功した場合に他にやりたいことがある、そして しない その操作によるIOErrorをキャッチしたい場合は、以下のような書き方をします。

try:
    operation_that_can_throw_ioerror()
except IOError:
    handle_the_exception_somehow()
else:
    # we don't want to catch the IOError if it's raised
    another_operation_that_can_throw_ioerror()
finally:
    something_we_always_need_to_do()

を置くだけなら another_operation_that_can_throw_ioerror() の後に operation_that_can_throw_ioerror は、その except は、2回目の呼び出しのエラーをキャッチします。そして、全体の後に置くと try ブロックの後に実行されるのではなく、常に実行されます。 finally . また else を確認することができます。

  1. は、例外がない場合にのみ実行されます。
  2. の前に実行されます。 finally ブロックと
  3. 任意 IOError が発生した場合、ここでは捕捉されません。