1print("noexc-finally") 2try: 3 print("try") 4finally: 5 print("finally") 6 7print("noexc-finally-finally") 8try: 9 print("try1") 10 try: 11 print("try2") 12 finally: 13 print("finally2") 14finally: 15 print("finally1") 16print() 17 18print("noexc-finally-func-finally") 19def func2(): 20 try: 21 print("try2") 22 finally: 23 print("finally2") 24 25try: 26 print("try1") 27 func2() 28finally: 29 print("finally1") 30print() 31 32 33print("exc-finally-except") 34try: 35 print("try1") 36 try: 37 print("try2") 38 foo() 39 except: 40 print("except2") 41finally: 42 print("finally1") 43print() 44 45print("exc-finally-except-filter") 46try: 47 print("try1") 48 try: 49 print("try2") 50 foo() 51 except NameError: 52 print("except2") 53finally: 54 print("finally1") 55print() 56 57 58print("exc-except-finally-finally") 59try: # top-level catch-all except to not fail script 60 try: 61 print("try1") 62 try: 63 print("try2") 64 foo() 65 finally: 66 print("finally2") 67 finally: 68 print("finally1") 69except: 70 print("catch-all except") 71print() 72 73# case where a try-except within a finally cancels the exception 74print("exc-finally-subexcept") 75try: 76 print("try1") 77finally: 78 try: 79 print("try2") 80 foo 81 except: 82 print("except2") 83 print("finally1") 84print() 85 86# case where exception is raised after a finally has finished (tests that the finally doesn't run again) 87def func(): 88 try: 89 print("try") 90 finally: 91 print("finally") 92 foo 93try: 94 func() 95except: 96 print("except") 97