极客编程python入门-错误处理

时间:2022-12-29 08:57:08


高级语言通常都内置了一套​try...except...finally...​的错误处理机制,Python也不例外。


try:
print('try...')
r = 10 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
print('END')


执行结果如下:


极客编程python入门-错误处理



从输出可以看到,当错误发生时,后续语句print('result:', r)不会被执行,except由于捕获到ZeroDivisionError,因此被执行。最后,finally语句被执行。然后,程序继续按照流程往下走。


try...
except: division by zero
finally...
END


从输出可以看到,当错误发生时,后续语句print('result:', r)不会被执行,except由于捕获到ZeroDivisionError,因此被执行。最后,finally语句被执行。然后,程序继续按照流程往下走。


你还可以猜测,错误应该有很多种类,如果发生了不同类型的错误,应该由不同的​except​语句块处理。没错,可以有多个​except​来捕获不同类型的错误:


try:
print('try...')
r = 10 / int('a')
print('result:', r)
except ValueError as e:
print('ValueError:', e)
except ZeroDivisionError as e:
print('ZeroDivisionError:', e)
finally:
print('finally...')
print('END')


小结


Python内置的try...except...finally用来处理错误十分方便。出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。

程序也可以主动抛出错误,让调用者来处理相应的错误。应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。