加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python容错

发布时间:2020-12-17 00:10:07 所属栏目:Python 来源:网络整理
导读:#try: except: else: #为什么叫容错呢,先说说错误,这里说的错误并不是因为马虎或者什么原因在脚本中留下的bug,这个不能容掉,所谓容掉就是略过这个错误,要在测试时候发现并修正,需要容错的错误是在脚本执行之前无法判断是不是会出错的错误,例如:在写

#try: except: else:

#为什么叫容错呢,先说说错误,这里说的错误并不是因为马虎或者什么原因在脚本中留下的bug,这个不能容掉,所谓容掉就是略过这个错误,要在测试时候发现并修正,需要容错的错误是在脚本执行之前无法判断是不是会出错的错误,例如:在写爬虫的时候,会爬到很多页面,这些页面我也不知道能不能打开,有可能超时,这时候总不能因为这个错误把进程停了找问题把,那么如果有几万个地址,估计得用几年时间去爬。所以这里就用到了容错,把这个错误跳过去,并把错误写入一个日志,等全部完成后,再来查看日志,看哪些页面报错误,然后单独对这一批页面进行处理

#以打开文件为例

i range(10= %= open(file_name,<span style="color: #008000">#<span style="color: #008000">然后读取11个文件,注意,是11个文件,就是说有一个文件是一定不存在的,那么会报错,现在我要把这个错误跳过,并写入日志<span style="color: #008000">

<span style="color: #008000">写日志函数一会单写一个,名字就叫write_log

<span style="color: #0000ff">for i <span style="color: #0000ff">in range(11<span style="color: #000000">):
filename = <span style="color: #800000">'<span style="color: #800000">a%d.txt<span style="color: #800000">' %<span style="color: #000000">i
<span style="color: #008000">#<span style="color: #008000">open_file = open(file_name,'r') 当读到第11个文件,就是10的时候会报错,所以不能这样
<span style="color: #0000ff">try<span style="color: #000000">:
open_file = open(file_name,<span style="color: #800000">'<span style="color: #800000">r<span style="color: #800000">') <span style="color: #008000">#<span style="color: #008000">try后面就是有可能出错的代码
<span style="color: #0000ff">except<span style="color: #000000">:
write_log(<span style="color: #800000">'<span style="color: #800000">open file fail!<span style="color: #800000">') <span style="color: #008000">#<span style="color: #008000">这个是错误的处理,就是出错的话,会把open file fail!写入日志,这样是可以的,但是不建议这样,最好把这个报错输出,并且一起写到日志里,就是下面这样<span style="color: #008000">

<span style="color: #008000">正常写法

<span style="color: #0000ff">for i <span style="color: #0000ff">in range(11<span style="color: #000000">):
filename = <span style="color: #800000">'<span style="color: #800000">a%d.txt<span style="color: #800000">' %<span style="color: #000000">i
<span style="color: #0000ff">try<span style="color: #000000">:
open_file = open(file_name,<span style="color: #800000">'<span style="color: #800000">r<span style="color: #800000">'<span style="color: #000000">)
<span style="color: #0000ff">except IOError,e: <span style="color: #008000">#<span style="color: #008000">这个IOError是IO错误,就是如果是这个错误的话,就把报错内容写到e变量里,也可以把IOError换成Exception,这样无论出什么错误,都会写到e变量里,不过为了明确错误,还是指定错误类型比较好
write_log(<span style="color: #800000">'<span style="color: #800000">%s open file fail! %s<span style="color: #800000">') %(file_name,e) <span style="color: #008000">#<span style="color: #008000">将错误的文件名和报错内容全部写入日志
<span style="color: #0000ff">else<span style="color: #000000">:
open_file.close() <span style="color: #008000">#<span style="color: #008000">虽然已经容错,不过已经打开的文件还是要关闭的,但是没有打开,也就是10,无法关闭,所以要加到else里面,else的功能就是正常执行了,就执行else后面的命令
<span style="color: #008000">#<span style="color: #008000">open_file.close() 这个是把关闭写在外面,想想无论正确与否都要关闭,那么打开10的时候open就报错了,也就是根本没打开,那何来的关闭呢

?忘了一个加入一堆报错了,这个是抄来的,百度有很多,可以参考下

异常名称 (编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

描述