【Python】exceptで複数の例外を処理する方法を簡単に解説
公開:
exceptで例外を効果的に扱う方法
【サンプルコード】
try:
# 何らかの処理を試みる
value = 10 / 0
except (ZeroDivisionError, ValueError) as e:
print("エラーが発生しました:", e)
【実行結果】
エラーが発生しました: division by zero
上記のサンプルコードではtryブロック内で例外が発生する可能性のある処理を行っています。ここではvalue = 10 / 0という式を用いており、これは0で割るという計算を行っています。
0で割る計算は数学的に不正であり、PythonではZeroDivisionErrorという例外が発生します。exceptブロックでは(ZeroDivisionError, ValueError)と記述しており、これによりZeroDivisionErrorまたはValueErrorのどちらかが発生した場合に処理が移ります。
この方法で複数の異なる例外を同じブロックで処理することができます。例外オブジェクトはas eとすることでeという変数に束縛され、print関数を用いてエラーメッセージを出力します。上記のコードの場合、ZeroDivisionErrorが発生し、「division by zero」というエラーメッセージが出力されます。
exceptで例外を個別に処理する方法
【サンプルコード】
try:
# 何らかの処理を試みる
value = 10 / 0
except ZeroDivisionError as e:
print("0で割ることはできません:", e)
except ValueError as e:
print("不正な値が入力されました:", e)
【実行結果】
0で割ることはできません: division by zero
tryブロックでは前の例と同じく0で割る計算を行っており、ZeroDivisionErrorが発生します。最初のexceptブロックではZeroDivisionErrorを捕捉し、この特定のエラーに対するメッセージを出力します。
次のexceptブロックではValueErrorを捕捉し、異なる種類のエラーが発生した場合に備えています。このように複数のexceptブロックを使用することで、異なるタイプの例外に対して異なる処理を行うことが可能です。
上記のサンプルコードではZeroDivisionErrorが発生したので、「0で割ることはできません」というメッセージが出力されます。
例外の詳細情報を活用する方法
【サンプルコード】
try:
# 何らかの処理を試みる
value = 10 / 0
except ZeroDivisionError as e:
print("エラーの種類:", type(e).__name__)
print("エラーの詳細:", e)
【実行結果】
エラーの種類: ZeroDivisionError
エラーの詳細: division by zero
ここでもtryブロックで0で割る計算を行い、ZeroDivisionErrorが発生します。exceptブロックでは例外オブジェクトの型名をtype(e).__name__で取得し、エラーの種類を出力しています。
さらにeオブジェクト自体を出力することで、例外の詳細メッセージを表示しています。この方法を使用することで、発生した例外の種類と詳細なメッセージを知ることができます。
この場合、出力されるのは「ZeroDivisionError」と「division by zero」というメッセージです。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。




