※この記事はUdemyの
「現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル」
の講座を受講した上での、自分用の授業ノートです。
講師の酒井潤さんから許可をいただいた上で公開しています。
##■例外処理
####◆基本
l = [0, 1, 2]
i = 5
try:
print(l[i])
except:
print('Error!')
result
Error!
try:
の中に書いたものを実行しようとし、それが何らかのエラーにより実行できなかった場合、
except:
内の処理が実行される。
####◆エラーの種類の指定
l = [0, 1, 2]
del l
try:
print(l)
except IndexError as ex:
print('Error massage: {}'.format(ex))
except NameError as ex:
print('Error massage: {}'.format(ex))
result
Error massage: name 'l' is not defined
IndexError
だったらこの処理、
NameError
だったらこの処理、といったようにエラーの種類の指定もできる。
####◆finally:
l = [0, 1, 2]
i = 5
try:
print(l[i])
except:
print('Error!')
finally:
print('clean up')
result
Error!
clean up
finally:
内に書いた処理は、tryが成功しようが、exceptとなろうが、必ず実行される。
l = [0, 1, 2]
i = 5
try:
print(l[i])
finally:
print('clean up')
result
clean up
Traceback (most recent call last):
File "/~~~", line 5, in <module>
print(l[i])
IndexError: list index out of range
したがって、実際エラーが起きてしまった場合でも、finally
内の処理が先に実行され、その後エラーでプログラムが停止することになる。
####◆else:
l = [0, 1, 2]
try:
print(l[0])
except:
print('Error!')
else:
print('done')
result
0
done
else:
を使うと、 try:
内の処理が成功した場合のみ、 else:
内の処理が実行される。