1# nested try's
2
3try:
4    print("try 1")
5    try:
6        print("try 2")
7        foo()
8    except:
9        print("except 2")
10    bar()
11except:
12    print("except 1")
13
14try:
15    print("try 1")
16    try:
17        print("try 2")
18        foo()
19    except TypeError:
20        print("except 2")
21    bar()
22except NameError:
23    print("except 1")
24
25# raised exception not contained in except tuple
26try:
27    try:
28        raise Exception
29    except (RuntimeError, SyntaxError):
30        print('except 2')
31except Exception:
32    print('except 1')
33
34# Check that exceptions across function boundaries work as expected
35def func1():
36    try:
37        print("try func1")
38        func2()
39    except NameError:
40        print("except func1")
41
42def func2():
43    try:
44        print("try func2")
45        foo()
46    except TypeError:
47        print("except func2")
48
49func1()
50