複数の例外を一度にキャッチする方法
Pythonでは、except句で複数の例外を一度にキャッチするために、例外をタプルでまとめて指定します。これにより、複数の例外を同じ処理でまとめて対応できます。
基本的な構文
以下のように、タプルで例外を指定することで、複数の例外を一度にキャッチできます。
try:
# エラーが発生する可能性のある処理
risky_code()
except (ValueError, TypeError) as e:
print(f"例外が発生しました: {e}")
この方法では、ValueErrorやTypeErrorが発生した場合に同じ処理が行われます。
Python 2と3の違い
Python 2では、カンマを使ったexcept句で例外をキャッチしていましたが、Python 3以降ではこの形式は非推奨です。代わりに、asキーワードを使用します。
Python 3では次のように書きます。
except (ValueError, TypeError) as e:
複数例外処理のベストプラクティス
-
例外はできるだけ明示的に: 例外処理では、具体的なエラーをキャッチする方がデバッグがしやすくなります。
except:で全ての例外をキャッチするのではなく、発生しうる特定のエラーに対して処理を分けることが推奨されます。 -
suppressを使った例外無視:Python3.4以降では、contextlib.suppress()を使うことで、指定した例外を簡潔に無視できます。
from contextlib import suppress
with suppress(ValueError, TypeError):
risky_code()
この構文を使うと、指定した例外が発生してもエラーを無視しつつプログラムの実行を続行できます。
Pythonで複数の例外を一行で処理する際は、タプルを使った構文が便利です。例外を効率よく処理するために、Python 3で推奨されるベストプラクティスを活用しましょう。