1.定义:Python通过内置一套try…except…finally…的错误处理机制来对输入数据进行判断处理。
try:
print('testing...')
r = 10 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
print('END')
结果:
try…
except: division by zero
finally…
END
2.错误处理——class属性
try:
print('testing...')
r = 10 / int('0')
print('result:', r)
except Exception as e:
print('Error:', e)
#第二个except永远也捕获不到 ZeroDivisionError。
#因为 ZeroDivisionError是Exception的子类,如果有,也被第一个except给捕获了。
except ZeroDivisionError as e:
print('ZeroDivisionError:', e)
else:
print('no error!')
finally:
print('finally...')
print('END')
结果:
testing…
Error: division by zero
finally…
END
3.错误处理——跨层调用
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
try:
bar('a')
except Exception as e:
print('Error:', e)
else:
print('no error!')
finally:
print('finally...')
#不需要在每个可能出错的地方去捕获错误,只要在合适的层次去捕获错误就可以了。
main()
结果:
Error: invalid literal for int() with base 10: ‘a’
finally…