Python与其他大部分语言一样内置了错误处理的机制,使用 try
, except
, finally
一套来处理程序抛出的错误;
处理错误
当我们预测某些代码可能会出错时,就使用这样的代码来处理:
try:
print('try...')
r = 10 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
print('END')
这里的 ZeroDivisionError
是一个错误类,还可以使用多个 except
来捕捉不同的错误,比如:
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')
raise抛出错误
如果也可以使用 raise
主动抛出错误,以便外层代码去捕捉并处理错误。 raise
语句如果不带参数,就会把当前错误原样抛出。
def foo(s):
n = int(s)
if n==0:
raise ValueError('invalid value: %s' % s)
return 10 / n
def bar():
try:
foo('0')
except ValueError as e:
print('ValueError!')
raise
bar()