异常处理: 语法:
try:
code
except (KeyError..可以写多个) as e: error为抓取的多个错误提示,e为错误信息
print(e) # 打印错误信息
except (IndexError) as e:
print(e)
except Exception as e: # 上面方法无法捕捉到的错误,在这里统统捕获
print('未知错误 ',e)
else: # 当没有出现错误,则执行这里
print('一切正常')
finally:
print('不管有没有错误,都会执行这里)' python标准异常
异常名称 描述
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 用户代码生成的警告
举例:
# 自定义异常
class zyEXCEPTION(Exception):
def __init__(self,msg):
self.msg = msg
# 以下这行如果存在,则根据以下这行返回错误,如果不存在,则返回self.msg信息
def __str__(self):
# return self.msg
return '自定义错误'
try:
raise zyEXCEPTION('数据库无法连接')
except zyEXCEPTION as e:
print(e)
使用raise抛出异常
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
演示raise用法
try:
s = None
if s is None:
print "s 是空对象"
raise NameError #如果引发NameError异常,后面的代码将不能执行
print len(s)
except TypeError:
print "空对象没有长度"