Pythonでは、try/except/finally
とループを組み合わせることで、エラーハンドリングと処理の繰り返しを効果的に行うことができます。
try/except/finallyとループの基本的な挙動
Pythonのループ(while
やfor
)の中でtry/except/finally
を使用すると、以下のような挙動になります。
while True:
try:
print('a')
raise Exception()
except Exception:
print('b')
break
finally:
print('c')
このコードを実行すると、出力はa
、b
、c
となります。try
ブロックで例外が発生し、except
ブロックが実行され、その後finally
ブロックが実行されます。そして、break
文によりループが終了します。
リトライ処理の実装
Pythonでは、for-else
構文とtry-except
構文を組み合わせることで、リトライ処理を実装することができます。以下にその一例を示します。
import time
import traceback
for _ in range(3): # 最大3回実行
try:
# 繰り返しさせたい処理
pass
except Exception as e:
print("失敗しました。もう一度繰り返します", _)
print(traceback.format_exc()) # 例外の内容を表示
time.sleep(1) # 適当に待つ
else:
print("成功しました。 ループを終了します。")
break
else:
print("最大試行回数に達しました。 処理を中断します")
raise Exception("最大試行回数に達しました。 処理を中断します.")
このコードでは、指定した回数だけ処理を繰り返し、成功した場合はループを終了し、最大試行回数に達した場合はエラーを発生させます。
以上、Pythonでのtry/except/finally
とループの組み合わせについて解説しました。これらの機能を理解し活用することで、より堅牢なコードを書くことができます。