用大量的错误码表示是否出错十分不便:
>>> def foo():
... r = some_function()
... if r ==(-1):
... return (-1)
... return r
...
>>> def bar():
... r = foo()
... if r ==(-1):
... print('Error')
... else:
... pass
...
>>>
从上面可以看到正常结果和错误码混在一起了。导致调用者需要用大量的代码来判断是否出错。
try 的使用:
>>> try:
... print('try...')
... 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
上面为输出结果
可以有多个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')
...
try...
ValueError: invalid literal for int() with base 10: 'a'
finally...
END
如果没有错误发生,可以在 except 语句后面加一个 else, 当没有错误发生时,会自动执行 else 语句:
>>> try:
... print('try...')
... r = 10 / int('2')
... 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')
...
try...
result: 5.0
no error!
finally...
END
总结:
1、Python 内置的 try...except...finally 用来处理错误十分方便。出错时,会分析错误信息并定位错误发生的代码位置才是关键
2、程序可以主动抛出错误,让调用者来处理相应的错误。但是,应该在文档钟写清楚可能抛出哪些错误,以及原因