複数の例外を一度にキャッチする方法

Pythonでは、except句で複数の例外を一度にキャッチするために、例外をタプルでまとめて指定します。これにより、複数の例外を同じ処理でまとめて対応できます。

基本的な構文

以下のように、タプルで例外を指定することで、複数の例外を一度にキャッチできます。

try:
    # エラーが発生する可能性のある処理
    risky_code()
except (ValueError, TypeError) as e:
    print(f"例外が発生しました: {e}")

この方法では、ValueErrorTypeErrorが発生した場合に同じ処理が行われます。

Python 2と3の違い

Python 2では、カンマを使ったexcept句で例外をキャッチしていましたが、Python 3以降ではこの形式は非推奨です。代わりに、asキーワードを使用します。 Python 3では次のように書きます。

except (ValueError, TypeError) as e:

複数例外処理のベストプラクティス

  • 例外はできるだけ明示的に: 例外処理では、具体的なエラーをキャッチする方がデバッグがしやすくなります。except:で全ての例外をキャッチするのではなく、発生しうる特定のエラーに対して処理を分けることが推奨されます。

  • suppressを使った例外無視: Python 3.4以降では、contextlib.suppress()を使うことで、指定した例外を簡潔に無視できます。

from contextlib import suppress
with suppress(ValueError, TypeError):
    risky_code()

この構文を使うと、指定した例外が発生してもエラーを無視しつつプログラムの実行を続行できます。

Pythonで複数の例外を一行で処理する際は、タプルを使った構文が便利です。例外を効率よく処理するために、Python 3で推奨されるベストプラクティスを活用しましょう。