Python内置了一套错误处理机制
try…excpet…finally
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
try:
bar('0')
except Exceptions as e:
print('error:', e)
finally:
print('...')
此机制可以跨越多层调用,在合适的层次捕获错误就可以了。
出错要分析调用栈的信息,找到源头
记录错误
使用Python内置的logging
将上述代码except语句下面改为
import logging
...
try:
...
except ... as ...:
logging.exception(e)
main()
print('end')
logging可以记录错误
抛出错误
用raise语句
抛出一个实例的错误
def foo(s):
n = int(s)
if n == 0:
raise ValueErroe
return 10 / n
def bar():
try:
foo(0)
except ValueError as e:
print('ValueError')
raise #raise 语句不带参数就会把错误原样抛出
bar()
此外
try:
10 / n
except ZeroDivisionError:
raise ValueError('input error')
在except中raise一个error,可以转换错误类型。