-
VS Code エディタを開きます。
-
~/project
ディレクトリに exception_classes.py
という名前の新しいファイルを作成します。
~/project/exception_classes.py
-
exception_classes.py
ファイルに以下のコードを追加します。
try:
result = 10 / 0
except ZeroDivisionError as e:
print("Caught a ZeroDivisionError:", e)
except ArithmeticError as e:
print("Caught an ArithmeticError:", e)
except Exception as e:
print("Caught some other exception:", e)
print("Program continues...")
このスクリプトでは、10 を 0 で割ろうとしており、これにより ZeroDivisionError
が発生します。3 つの except
ブロックがあります。ZeroDivisionError
用、ArithmeticError
用、そして Exception
用です。
-
ターミナルで以下のコマンドを使用してスクリプトを実行します。
python exception_classes.py
これにより、ターミナルに "Caught a ZeroDivisionError: division by zero" と表示されます。
出力例:
Caught a ZeroDivisionError: division by zero
Program continues...
この出力は、ZeroDivisionError
が最初の except
ブロックで捕捉されたことを示しています。
次に、別の例外を発生させるようにスクリプトを変更しましょう。
-
exception_classes.py
ファイルを以下のように変更します。
try:
result = int("abc")
except ZeroDivisionError as e:
print("Caught a ZeroDivisionError:", e)
except ValueError as e:
print("Caught a ValueError:", e)
except ArithmeticError as e:
print("Caught an ArithmeticError:", e)
except Exception as e:
print("Caught some other exception:", e)
print("Program continues...")
この変更後のスクリプトでは、文字列 "abc" を整数に変換しようとしており、これにより ValueError
が発生します。
-
同じコマンドを使用してスクリプトを再度実行します。
python exception_classes.py
これにより、ターミナルに "Caught a ValueError: invalid literal for int() with base 10: 'abc'" と表示されます。
出力例:
Caught a ValueError: invalid literal for int() with base 10: 'abc'
Program continues...
この出力は、ValueError
が 2 番目の except
ブロックで捕捉されたことを示しています。
except
ブロック内で直接例外クラスを指定することで、さまざまなタイプの例外を明確かつ整理された方法で処理することができます。このアプローチは、単純な例外処理において、isinstance()
を使用するよりも一般的に好まれます。