有一类错误是完全无法在程序运行过程中预测的,比如从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。
1、常见格式
# a = '0'
# a = '*'
a = '1'
try:
r = 10 / int(a)
print('result:', r)
except ValueError as e:
print('ValueError:', e)
except ZeroDivisionError as e:
print('ZeroDivisionError:', e)
else:
print('no error!')
finally:
print('finally...')
print('END')
如果int()函数发生错误(对应ValueError)或者分母为0(对应ZeroDivisionError),后续语句print('result:', r)
不会被执行;如果没有错误发生,则会执行else语句;无论错误是否发生,finally
语句一定会被执行。最后,程序继续按照流程往下走,执行print('END')语句。
1.1注意事项
Python的错误其实也是class,都继承自BaseException。如果程序写成:先except父类,再except子类,则永远捕获不到子类错误。比如下面,ValueError是UnicodeError的父类,则当错误发生时,程序只会捕获ValueError,永远捕获不到UnicodeError。
另外,