exceptで指定の例外のみを処理する方法

exceptブロックで特定の例外を処理するためには、例外のクラスを指定します。以下の方法で特定の例外を捕捉し、それに対するエラーハンドリングを行います。

例えば、ZeroDivisionError例外のみを捕捉して処理する場合を考えてみましょう:

python
try: result = 10 / 0 except ZeroDivisionError: print("ゼロで割ることはできません")

この場合、ZeroDivisionErrorが発生したときのみ、その例外が捕捉されてエラーハンドリングが実行されます。他の例外に対しては何も行われません。

複数の異なる例外に対する異なるエラーハンドリングを行うには、exceptブロックを複数使ってそれぞれの例外を指定します:

python
try: result = 10 / 0 except ZeroDivisionError: print("ゼロで割ることはできません") except ValueError: print("無効な値です")

上記の例では、ZeroDivisionErrorValueErrorの2つの異なる例外に対して異なるエラーハンドリングが行われます。

また、ある例外の基底クラス(Exceptionクラス)を指定することで、複数の例外を一つのexceptブロックで処理することもできます。たとえば、次のようにします:

python
try: result = int("abc") # 有効でない整数文字列をint関数で変換 except (ValueError, TypeError): print("無効な値または型エラーが発生しました")

この例では、ValueErrorTypeErrorの両方に対するエラーハンドリングが一つのexceptブロックで行われています。