例外トレースバックをキャッチして処理する方法
プログラム中で予期しないエラーが発生した場合、プログラムを停止させずにエラー情報をログに記録するか、エラーを無視してプログラムの実行を続けることが可能です。以下にPythonで例外トレースバックをキャッチし、処理する方法を示すサンプルコードを3つ紹介します。
サンプルコード1: try-exceptブロックを使用
最も基本的な例外処理方法です。tryブロック内で実行されるコードで例外が発生すると、exceptブロックが実行されます。
try:
# 0で割り算を試みる
result = 10 / 0
except ZeroDivisionError as e:
# 例外が発生した場合に実行されるブロック
print("エラーが発生しました:", e)
サンプルコード2: 例外の情報をログに記録
loggingライブラリを使用して、例外の情報をログファイルに記録することができます。これにより、プログラムのデバッグが容易になります。
import logging
logging.basicConfig(filename='example.log', level=logging.ERROR)
try:
# 存在しないファイルを開く
with open('nonexistent_file.txt') as file:
read_data = file.read()
except FileNotFoundError as e:
logging.error("ファイルが見つかりませんでした: %s", e)
サンプルコード3: 例外を再発生させずに処理
例外をキャッチした後、特定の処理を行いつつプログラムの実行を続けることができます。これは、例外の影響を最小限に抑える場合に有効です。
def safe_division(x, y):
try:
result = x / y
except ZeroDivisionError:
print("ゼロ除算が発生しました。")
return None # エラーを示すためにNoneを返す
else:
return result
# 関数のテスト
print(safe_division(10, 2)) # 5を出力
print(safe_division(10, 0)) # エラーメッセージを出力し、Noneを返す
これらのサンプルコードを参考に、Pythonの例外処理を適切に行い、プログラムの安定性とメンテナンス性を高めることができます。例外トレースバックを理解し、適切に処理することは、エラーからの回復だけでなく、将来的なエラーの予防にも繋がります。
