#例外処理について
いまいち理解できなかったので、ざっくり覚えて使ってたらなんとなくわかってきた
##try:
try:
r = x + y
print(r)
z = True
ここには処理したい内容を記入
この場合 r に x + y を代入した後rを出力する
後々の判定で分かり易くするため最後にz に True を代入
##except:
ここにはエラーが起きた場合の処理を書く
TypeErrorと書いてあるのはエラーの種類
エラーの種類とエラーが出た時にコンソールに出てくる英文の左端の方にかいてあるやつ
エラーが起きたら z に False を代入
except TypeError:
z = False
#finally:
finally:
if z:
print("エラー起きてないよ")
else:
print("エラー起きたよ")
ここにはエラーが起きようが起きまいが最後に処理する項目を書く
この場合zの中身を判定して文字を出力
#どうなるか
x = 1
y = 2
try:
r = x + y
print(r)
z = True
except TypeError:
z = False
finally:
if z:
print("エラー起きてないよ")
else:
print("エラー起きたよ")
# 結果
>>> 3
>>> エラー起きてないよ
r = 1 + 2
print(r)
見て分かるようにエラーになる処理がないので
最後の z に True が代入され try: 内の処理は無事成功
エラーがー起きようが起きまいが処理する***finally:***に飛んで
ifで z を判定、z は True なので print("エラー起きてないよ") が実行される
x = 1
y = "文字"
try:
r = x + y
print(r)
z = True
except TypeError:
z = False
finally:
if z:
print("エラー起きてないよ")
else:
print("エラー起きたよ")
# 結果
>>> エラー起きたよ
x は数値で y は文字列
文字列型と整数型を + する、加算は出来ないので所謂くっつける場合はstr(整数型)としないとTypeErrorが発生します
なので、ここでエラーが発生して r に代入どころか次の行の print(r) にも行けず
except TypeError: に飛んで z = False の代入をします
おなじみ***finally:***はエラーが起きようが起きまいが処理するので
z を判定すると False なっているので print("エラー起きたよ") が実行されるという
本来は
TypeError: unsupported operand type(s) for +: 'int' and 'str'
このようなエラーが出て処理がプログラムが停止するけども
例外処理をすることによって、エラーが発生しても停止せずに処理を続けることができる
#コードを臨機応変にさせよう