複数の例外を一度にキャッチする方法
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
を使った例外無視:Python
3.4以降では、contextlib.suppress()
を使うことで、指定した例外を簡潔に無視できます。
from contextlib import suppress
with suppress(ValueError, TypeError):
risky_code()
この構文を使うと、指定した例外が発生してもエラーを無視しつつプログラムの実行を続行できます。
Python
で複数の例外を一行で処理する際は、タプルを使った構文が便利です。例外を効率よく処理するために、Python
3で推奨されるベストプラクティスを活用しましょう。