这个月发生太多事了,导致断断续续的发表学习文章,17年已过一半了,加油努力,相信下半年会更好的!!
第一.try...except...finally
处理错误十分方便,当我们认为某些代码可能会出错时,就可以用try运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句,则会运行finally语句,如下面代码
代码:
try:
print('try')
r = 100 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally')
运行结果:
try
('except:', ZeroDivisionError('integer pision or modulo by zero',))
finally
如果把除数0改为5
运行结果:
try
('result:', 20)
finally
第二.调用堆栈
如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出
代码:
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
bar('0')
main()
运行结果:
********END********
Traceback (most recent call last):
File "error.py", line 20, in
main()
File "error.py", line 18, in main
bar('0')
File "error.py", line 15, in bar
return foo(s) * 2
File "error.py", line 12, in foo
return 10 / int(s)
ZeroDivisionError: integer pision or modulo by zero
第三.记录错误
可以用logging记录错误信息,同时程序也可以运行下去
代码:
import logging
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
try:
bar('0')
except Exception as e:
logging.exception(e)
main()
print('END')
运行结果:
ERROR:root:integer pision or modulo by zero
Traceback (most recent call last):
File "error.py", line 32, in main
bar('0')
File "error.py", line 28, in bar
return foo(s) * 2
File "error.py", line 25, in foo
return 10 / int(s)
ZeroDivisionError: integer pision or modulo by zero
END
第四.抛出错误(raise)
我们自己编写的函数也可以抛出错误。如果要抛出错误,首先根据需要,可以定义一个错误的class,选择好继承关系,然后用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()
运行结果:
ValueError!
Traceback (most recent call last):
File "error.py", line 53, in
bar()
File "error.py", line 48, in bar
foo('0')
File "error.py", line 43, in foo
raise ValueError('invalid value: %s' % s)
ValueError: invalid value: 0
综述:
处理错误可以用try...except...finally,关键要学会分析出错的地方;程序也可以主动抛出错误,让调用者来处理相应的错误。
页面更新:2024-05-11
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号