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