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')
View Code

输出:

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语句块后的语句是在没有异常或异常被程序捕获处理后才会执行。

posted @ 2019-11-19 14:49  超快排华哥  阅读(131)  评论(0)    收藏  举报