Pythonで複数の例外を一つのexceptブロックで処理する方法

この記事では、Pythonプログラミングにおいて複数の例外を一つの`except`ブロックで処理する方法について解説します。具体的なコード例、その詳細な解説、さらに応用例を2つ紹介します。

目次

なぜ複数の例外を一つのexceptブロックで処理するのか

プログラムを書いていると、異なるタイプの例外が発生する可能性があります。それぞれに対して個別に`except`ブロックを書くこともできますが、その処理が同じである場合には、複数の例外を一つの`except`ブロックで処理することが有用です。これによってコードがスッキリとし、可読性や保守性が向上します。

基本的な使用方法

Pythonでは、複数の例外を一つの`except`ブロックで処理するためには、例外をタプルでまとめて指定します。

コード例


# 複数の例外を一つのexceptブロックで処理する基本的な例
try:
    # 例外が発生する可能性があるコード
    x = int(input("整数を入力してください: "))
    y = 10 / x
except (ValueError, ZeroDivisionError) as e:
    # ValueErrorまたはZeroDivisionErrorが発生した場合の処理
    print(f"エラーが発生しました: {e}")

コード解説

– `try`ブロック:例外が発生する可能性があるコードをこのブロック内に記述します。
– `except`ブロック:`ValueError`または`ZeroDivisionError`のいずれかが発生した場合に実行されるブロックです。ここでは`as e`を使って、発生した例外オブジェクトを変数`e`に格納しています。

応用例1: ロギングを含む例

例外が発生した場合に、エラーログをファイルに出力するようなケースを考えます。

コード例


import logging

# ロギングの設定
logging.basicConfig(filename='example.log', level=logging.ERROR)

try:
    x = int(input("整数を入力してください: "))
    y = 10 / x
except (ValueError, ZeroDivisionError) as e:
    print(f"エラーが発生しました: {e}")
    logging.error(f"エラーが発生: {e}")

コード解説

– `logging`モジュールを使用して、エラー情報をログファイルに出力しています。

応用例2: エラーメッセージのカスタマイズ

発生した例外に応じてエラーメッセージをカスタマイズする方法です。

コード例


try:
    x = int(input("整数を入力してください: "))
    y = 10 / x
except (ValueError, ZeroDivisionError) as e:
    if isinstance(e, ValueError):
        print("整数を入力してください。")
    elif isinstance(e, ZeroDivisionError):
        print("0以外の数を入力してください。")

コード解説

– `isinstance`関数を用いて、例外のタイプに応じてエラーメッセージを変更しています。

まとめ

複数の例外を一つの`except`ブロックで処理する方法は、コードをスッキリさせるだけでなく、保守性や可読性の向上にも貢献します。応用例を通じて、ロギングやエラーメッセージのカスタマイズなど、さまざまな場面での活用方法を学びました。

コメント

コメントする

目次