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