Python の「try」ステートメントのオプションの「else」句の意図された使用法は何ですか? 質問する

Python の「try」ステートメントのオプションの「else」句の意図された使用法は何ですか? 質問する

else声明のオプション節の意図された使用法は何ですかtry?

ベストアンサー1

ブロック内のステートメントは、例外がなかった場合、else実行がブロックの一番下から外れた場合に実行されます。正直なところ、必要性を感じたことがありません。try

しかし、例外の処理ノート:

else 句を使用すると、try ... except ステートメントによって保護されているコードによって発生しなかった例外を誤ってキャッチすることが回避されるため、try 句に追加のコードを追加するよりも効果的です。

したがって、たとえば をスローする可能性のあるメソッドがあり、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、 はexcept2番目の呼び出しのエラーをキャッチします。また、 をブロック全体の後に置くとtry、 が実行されるまで常に実行されませんfinallyelseを使用すると、

  1. 2番目の操作は例外がない場合にのみ実行されます。
  2. ブロックの前に実行されfinally
  3. それが引き起こすいかなるsもIOErrorここでは捕捉されない

おすすめ記事