プログラムを停止させずに、Pythonの例外トレースバック全体をキャッチしてプリントする方法

PYTHON3 チュートリアル

例外トレースバックをキャッチして処理する方法

プログラム中で予期しないエラーが発生した場合、プログラムを停止させずにエラー情報をログに記録するか、エラーを無視してプログラムの実行を続けることが可能です。以下に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の例外処理を適切に行い、プログラムの安定性とメンテナンス性を高めることができます。例外トレースバックを理解し、適切に処理することは、エラーからの回復だけでなく、将来的なエラーの予防にも繋がります。

購読
通知
0 Comments
Inline Feedbacks
View all comments