博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python容错
阅读量:5318 次
发布时间:2019-06-14

本文共 2562 字,大约阅读时间需要 8 分钟。

#try: except: else:

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

#以打开文件为例

#先创建10个文件for i in range(10):  file_name = 'a_%d.txt' %i  new_file = open(file_name,'w')  new_file.close()#然后读取11个文件,注意,是11个文件,就是说有一个文件是一定不存在的,那么会报错,现在我要把这个错误跳过,并写入日志#写日志函数一会单写一个,名字就叫write_logfor i in range(11):  file_name = 'a_%d.txt' %i  #open_file = open(file_name,'r') 当读到第11个文件,就是10的时候会报错,所以不能这样  try:    open_file = open(file_name,'r') #try后面就是有可能出错的代码  except:    write_log('open file fail!') #这个是错误的处理,就是出错的话,会把open file fail!写入日志,这样是可以的,但是不建议这样,最好把这个报错输出,并且一起写到日志里,就是下面这样#正常写法for i in range(11):  file_name = 'a_%d.txt' %i  try:    open_file = open(file_name,'r')  except IOError, e: #这个IOError是IO错误,就是如果是这个错误的话,就把报错内容写到e变量里,也可以把IOError换成Exception,这样无论出什么错误,都会写到e变量里,不过为了明确错误,还是指定错误类型比较好    write_log('%s open file fail! %s') %(file_name,e) #将错误的文件名和报错内容全部写入日志  else:    open_file.close() #虽然已经容错,不过已经打开的文件还是要关闭的,但是没有打开,也就是10,无法关闭,所以要加到else里面,else的功能就是正常执行了,就执行else后面的命令  #open_file.close() 这个是把关闭写在外面,想想无论正确与否都要关闭,那么打开10的时候open就报错了,也就是根本没打开,那何来的关闭呢

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

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
LookupError 无效数据查询的基类
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

转载于:https://www.cnblogs.com/xiu123/p/8439192.html

你可能感兴趣的文章
keystone源码分析(一)——Paste Deploy的应用
查看>>
世界是座孤儿院
查看>>
VUE路由history模式坑记--NGINX
查看>>
线程同步-使用SimaphoreSlim类
查看>>
Spring整合MyBatis
查看>>
Java/Java Web中乱码解决汇总
查看>>
表格操作
查看>>
TortoiseGit使用指南
查看>>
大数据学习——securecrt同时向多个tab窗口发送相同的命令
查看>>
Swift学习笔记(4):字符串
查看>>
Windows下部署多个Tomcat
查看>>
[BZOJ1672][Usaco2005 Dec]Cleaning Shifts 清理牛棚
查看>>
VBoxManage命令速记
查看>>
(转载)我们工作到底为了什么 (HP大中华区总裁孙振耀退休感言)
查看>>
phpstudy + dvws
查看>>
2016/3/10 数据库简单操作( 创建数据库 创建表 数值类型 主键 外键 自动递增 )...
查看>>
Redis客户端连接池问题
查看>>
linux C print
查看>>
Mac-Navicat Premium For Mac 12 破解 - [数据库可视化工具,亲测完美破解]
查看>>
利用Chrome查看网页渲染机制
查看>>