python之异常处理
下面的例子可以方便的理解异常处理的流程:
sep = '-' * 32 + '\n' print(sep + 'EXCEPTION RAISED AND CAUGHT') try: x = 'spam'[9] except IndexError: print('except run') finally: print('finally run') print('after run') print(sep + 'NO EXCEPTION RAISED') try: x = 'spam'[3] except IndexError: print('except run') finally: print('finally run') print('after run') print(sep + 'NO EXCEPTION RAISED, WITH ELSE') try: x = 'spam'[3] except IndexError: print('except run') else: print('else run') finally: print('finally run') print('after run') print(sep + 'EXCEPTION RAISED BUT NOT CAUGHT') try: x = 1 / 0 except IndexError: print('except run') finally: print('finally run') print('after run')
输出:
Traceback (most recent call last): -------------------------------- File "F:/xhbproject/fenci_test/cdn-api/test.py", line 36, in <module> EXCEPTION RAISED AND CAUGHT except run finally run x = 1 / 0 after run ZeroDivisionError: division by zero -------------------------------- NO EXCEPTION RAISED finally run after run -------------------------------- NO EXCEPTION RAISED, WITH ELSE else run finally run after run -------------------------------- EXCEPTION RAISED BUT NOT CAUGHT finally run
可以看出:
else子句是在没有发生异常的情况下执行的,finally子句是不管有没有异常都会执行,try语句块后的语句是在没有异常或异常被程序捕获处理后才会执行。

浙公网安备 33010602011771号