Python の例外

Python の例外とは?

Python プログラムのコードがでたらめに書いてあれば、プログラムが動作しないは当然です。 しかし、プログラムの構文的に正しく書いてあっても、プログラムの実行中にエラーが発生することはあります。

例えば、次のプログラムはユーザーの入力を受け取って割り算を行います。

a = float(input('Enter a : '))
b = float(input('Enter b : '))
c = a / b
print('a/b = %.2f' % (c))

実行してみましょう。( : のあとの数字はユーザーの入力です)

Enter a : 15
Enter b : 2.5
a/b = 6.00

正しく動作しています。

しかし、もし b0 を入力すると、0 で割り算は出来ませんので、次のようなエラーが発生します。

Enter a : 15
Enter b : 0
Traceback (most recent call last):
  File "/path/to/file.py", line 3, in <module>
    c = a / b
ZeroDivisionError: float division by zero

このように、プログラムの実行中に状況によって発生するエラーのことを 例外 (Exception) といいます。

例外処理ハンドラとは?

例外が発生したときに、その対応 (処理) を行う箇所を、一般的に「例外処理ハンドラ」などと呼びます。

例外が発生すると、Python のランタイム (実行環境) は「例外が発生したけど、どうしますか?」とプログラムに処理を戻そうとします。 このとき、例外処理ハンドラを探して、見つかればそれを実行し、プログラムは実行を続けます。

例外処理ハンドラが見つからなければ、エラーが出た状態のままであり、そのままの状態でプログラムを実行するのも良いことではありません。このため、プログラムは停止されます。

Python に限らず、ソフトウェアを使っていて「エラーが発生して、プログラムがクラッシュする」という経験をしたことがあるひとも多いと思います。 プログラムがクラッシュしたというのはつまり、エラー (例外) に対して、それを処理するハンドラがなかったために、ソフトウェアの実行環境がプログラムを強制的に終了したという状態なのです。

逆に言えば、適切に例外処理をしていれば、プログラムは基本的にクラッシュしません。(ハードウェアの故障や電源が抜けるなどの理由で、OS ごと落ちたりすれば急に止まる事はあるでしょうが・・・)

Python での例外処理ハンドラの書き方については、次の記事「Python 例外処理の基本 (try/except/finally)」で説明していますので、よかったらみてください。

ここでは、Python の例外とは何か?ということと、例外処理とは?ということについて説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門