例外処理とは?
今回はPythonで例外処理の方法を解説していきたいと思います。
まずは例外処理という言葉は馴染みがないので、言葉の解説から始めていきたいと思います。
プログラムを実行した時、起きるのは「正常終了」か「異常終了」の二つです。
正常終了は、最後までプログラムが意図した通りに処理が終了することです。
異常終了は、プログラムの途中でプログラムとして意図されていない処理が行われ、終了した状態を指します。
正常終了した場合は、意図した通りなので問題では無いのですが、異常終了の場合は意図していない処理が行われているため、プログラムとして問題なわけです。

ということで異常終了の原因を探っていきます。
異常終了の原因としては、プログラマーが前もって想定できる原因と、想定できない原因があるわけです。
そのうち前もって想定できる原因に対して、その処理法を書いておくのが「例外処理」ということです。

例:二つの変数で掛け算をしてみる
例えば、変数xとyを使って、二つの数字の掛け算を行い、表示するこのプログラム。
x = 2
y = 3
print(x * y)
実行結果
6
両方とも数字(int)なら問題なく、答えが計算されます。
しかし両方ともダブルクオーテーションでくくり、文字(str)としての数字に変えてみます。
x = "2"
y = "3"
print(x * y)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-XX-XXXXXXXXXXXX> in <module>
2 y = "3"
3
----> 4 print(x * y)
TypeError: can't multiply sequence by non-int of type 'str'
このようにエラーが表示されます。
このエラーを補足(キャッチといいます)して、処理をするのが例外処理ということです。
try – except文の基本的な使い方
Pythonで例外処理を行う場合、使われる構文が「try – except」になります。
一番基本的な書き方としては、こんな感じです。
try:
試したい処理
except:
エラーだった場合の処理
先ほどの二つの変数を掛け合わせるプログラムを使って、エラーが出る場合はErrorと表示させてみましょう。
try:
print(x * y)
except:
print("Error")
このプログラムでx = 3、y = 2と両方とも数字(int)の場合はこうなります。
x = 3
y = 2
try:
print(x * y)
except:
print("Error")
実行結果
6
普通に3×2が計算されて、6が表示されます。
次にx = “3”、y = “2”、つまり文字(str)としての数字にしてみましょう。
x = "3"
y = "2"
try:
print(x * y)
except:
print("Error")
実行結果
Error
この場合は “3” × “2”ではエラーが出て処理できないため、exceptに書いたの処理が行われ、Errorが表示されます。
エラーではなかった場合のみ続けて処理する:else
次にtryで書いたプログラムでエラーが出なかった場合のみ、さらに処理する方法を解説します。
その際に使うのが「else」です。
elseを使って、正常に処理できた場合、Goodと表示させてみます。
try:
print(x * y)
except:
print("Error")
else:
print("Good")
これでx = 3、y = 2、つまり両方とも数字(int)を入れてみます。
x = 3
y = 2
try:
print(x * y)
except:
print("Error")
else:
print("Good")
実行結果
6
Good
では数字(int)ではなく、両方とも文字(str)を入れた場合(x = “3”、y = “2”)はどうでしょうか。
x = "3"
y = "2"
try:
print(x * y)
except:
print("Error")
else:
print("Good")
実行結果
Error
この場合は、elseに書かれたプログラムは実行されないため、Goodは表示されません。
エラーに関係なく続けて処理する:finally
tryでの処理がエラーになっても、ならなくても続けて処理する場合、finallyを使います。
ということでエラーに関係なく、プログラムの最後に「Finish」と表示させてみます。
x = 3
y = 2
try:
print(x * y)
except:
print("Error")
else:
print("Good")
finally:
print("Finish")
両方とも数字の場合(x = 2、y = 3)はこうなります。
x = 3
y = 2
try:
print(x * y)
except:
print("Error")
else:
print("Good")
finally:
print("Finish")
実行結果
6
Good
Finish
tryでの処理により6が、elseでの処理によりGoodが、finallyの処理によりFinishが表示されます。
次に両方とも文字の場合(x = “3”、y = “2”)はこういう結果になります。
x = "3"
y = "2"
try:
print(x * y)
except:
print("Error")
else:
print("Good")
finally:
print("Finish")
実行結果
Error
Finish
この場合、tryでの処理に失敗しているため、exceptの処理が行われErrorが表示され、さらにfinallyの処理が行われるためFinishが表示されます。
ということで今回は例外処理 try – except文の基本を解説してみました。
この例外処理ができるようになると、条件分岐なんかにも使えて便利なので、是非とも習得していきたいものです。
次回はexceptの処理に関してもう少し詳しく解説していく予定です。

ということで今回はこんな感じで。
コメント