1# test try handling within a viper function
2
3# basic try-finally
4@micropython.viper
5def f():
6    try:
7        fail
8    finally:
9        print("finally")
10
11
12try:
13    f()
14except NameError:
15    print("NameError")
16
17# nested try-except with try-finally
18@micropython.viper
19def f():
20    try:
21        try:
22            fail
23        finally:
24            print("finally")
25    except NameError:
26        print("NameError")
27
28
29f()
30
31# check that locals written to in try blocks keep their values
32@micropython.viper
33def f():
34    a = 100
35    try:
36        print(a)
37        a = 200
38        fail
39    except NameError:
40        print(a)
41        a = 300
42    print(a)
43
44
45f()
46