今回は前回のよく起こるエラーの続きで、
そのエラーに対してどのようにするかという
例外処理
の講義です。
エラーが出たタイミングでシステムがトラブルを起こして
止まってしまうのではなく、
なにかしらのエラーが起きたら、こういう対処をします
ということを事前に書いておきます。
それを例外処理というそうです。
題材として三角形の面積を求める数式をつかって
講義を進めていきます。
#三角形の面積を計算する
def calc_tri(base,height):
return base*height*0.5
base = 10
height = 1
result = calc_tri(base,height)
print('計算結果:{}'.format(result))
計算結果:5.0
問題なく計算できています。
そこで底辺を表すheightを文字列に変えてみます。
すると当然のことながらエラーが出ます。
base = 10
height = '5'
result = calc_tri(base,height)
print('計算結果:{}'.format(result))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-84995b63fe6b> in <module>()
2 height = '5'
3
----> 4 result = calc_tri(base,height)
5 print('計算結果:{}'.format(result))
<ipython-input-1-a78a208af43f> in calc_tri(base, height)
1 #三角形の面積を計算する
2 def calc_tri(base,height):
----> 3 return base*height*0.5
TypeError: can't multiply sequence by non-int of type 'float'
そこでエラーが起きそうな計算の部分の
インデントを下げて
try:
except Exception as e:
の中に入れます。
そしてその外にエラーが起きた時の出力をいれます。
また、
print(e)
といれると英文ですが、エラーの説明が出力されます。
base = 10
height = '5'
try:
result = calc_tri(base,height)
print('計算結果:{}'.format(result))
except Exception as e:
print('計算できません')
print(e)
計算できません
can't multiply sequence by non-int of type 'float'
次は別の例題です。
計算例として0で割るというエラーの処理をします。
try:
a = 10
b= 0
result = a/b
except ZeroDivisionError:
print('0で割ってます')
0で割ってます
0で割るとでてくるエラーというのは
Pythonで予めエラーとして定義されています。
それがZeroDivisionErrorです。
あと、必ず通る処理として
finally文
といものもあり、この文の中の処理は必ず出力されます。
try:
a = 10
b= 1
result = a/b
except ZeroDivisionError:
print('0で割ってます')
finally:
print('ここは必ず通ります')
ここは必ず通ります
コメント