1
l = [1, 2, 3]
i = 5
print('start')
try:
l[0]
except IndexError as ex:
print('そのインデックスはありません。{}'.format(ex))
except NameError as ex:
print('定義されていません。{}'.format(ex))
except Exception as ex:
print('other: {}'.format(ex))
else:
print("正常に処理されました。")
finally:
print("end")
1の実行結果
start
正常に処理されました。
end
どのエラーも発生しないので、
elseブロックとfinallyブロックが実行された。
2
l = [1, 2, 3]
i = 5
print('start')
try:
l[i]
except IndexError as ex:
print('そのインデックスはありません。{}'.format(ex))
except NameError as ex:
print('定義されていません。{}'.format(ex))
except Exception as ex:
print('other: {}'.format(ex))
else:
print("正常に処理されました。")
finally:
print("end")
2の実行結果
start
そのインデックスはありません。list index out of range
end
インデックスが2までしかないのに、
インデックス5を指定し、
IndexErrorが発生する。
なので、
except IndexError as exのブロックとfinallyブロックが実行された。
3
l = [1, 2, 3]
i = 5
del l
print('start')
try:
l[0]
except IndexError as ex:
print('そのインデックスはありません。{}'.format(ex))
except NameError as ex:
print('定義されていません。{}'.format(ex))
except Exception as ex:
print('other: {}'.format(ex))
else:
print("正常に処理されました。")
finally:
print("end")
3の実行結果
start
定義されていません。name 'l' is not defined
end
del lでlがなくなったので、
NameErrorが発生する。
なので、
except NameError as exのブロックとfinallyブロックが実行された。
4
l = [1, 2, 3]
i = 5
print('start')
try:
l + ()
except IndexError as ex:
print('そのインデックスはありません。{}'.format(ex))
except NameError as ex:
print('定義されていません。{}'.format(ex))
except Exception as ex:
print('other: {}'.format(ex))
else:
print("正常に処理されました。")
finally:
print("end")
4の実行結果
start
other: can only concatenate list (not "tuple") to list
end
リストとタプルを足し算するので、
IndexErrorでもNameErrorでもないエラーが発生する。
なので、
except Exception as exのブロックとfinallyブロックが実行された。