1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
# mode: run
# tag: exceptions, tryfinally
import sys
IS_PY3 = sys.version_info[0] >= 3
def test_finally_c():
"""
>>> def test_finally_py():
... try:
... raise AttributeError()
... finally:
... raise KeyError()
>>> try:
... test_finally_py()
... except KeyError:
... print(sys.exc_info()[0] is KeyError or sys.exc_info()[0])
... if IS_PY3:
... print(isinstance(sys.exc_info()[1].__context__, AttributeError)
... or sys.exc_info()[1].__context__)
... else:
... print(True)
True
True
>>> try:
... test_finally_c()
... except KeyError:
... print(sys.exc_info()[0] is KeyError or sys.exc_info()[0])
... if IS_PY3:
... print(isinstance(sys.exc_info()[1].__context__, AttributeError)
... or sys.exc_info()[1].__context__)
... else:
... print(True)
True
True
"""
try:
raise AttributeError()
finally:
raise KeyError()
|