20130714-Python异常处理机制
来源:互联网 发布:网络主播菲儿个人资料 编辑:程序博客网 时间:2024/05/11 17:05
1、目标
使用异常处理机制
常用异常类
2、Python异常处理机制
2.1、异常处理关键字
关键字
说明
形式
try
检查代码块
except
捕捉处理异常
一个try可连续使用多个except
一个except可捕捉多种异常
except Exception, e:
#处理异常
except (ValueError, TypeErroe), e:
#一个except处理多个异常
else
try无异常时执行
finally
无论异常与否,必执行
raise
触发抛出异常
raise [SomeException [,args[,traceback]]]
#traceback:异常触发时的跟踪记录对象
2.2、异常处理流程示例
try:
#检查代码块
except ValueError, e:
#处理ValueError
except TypeError, e
#处理TypeError
except Exception, e
raise string, “new exception” #抛出异常
else:
#无异常时,执行
finally:
#清理垃圾
3、常用异常类
3.1、异常类继承树
3.2 异常类Exception属性
3.2.1继承自BaseException的
属性
说明
args
raise Exception [,args [, traceback]] 中的args,元组类型
raise Exception, (“error message”, errorno)
message
Exception(“my message”), “my message” 为message属性值
注(’my message’,)为args元组
方法
说明
__reduce__
__reduce__(self):序列化自身
__setstate__
当处理unpickling(不可序列化) 的对象的实例属性时,可以使用特殊的方法_getstate_()
和 _setstate_()
来修改类实例的状态。
示例说明见附录1
__unicode__
解码为unicode对象
装饰器(slot wrapper)
说明
__init__
__str__
返回可读字符串
__repr__
representation,返回可解析的字符串。它的返回值通常可以用来重新获得该对象,通常情况下 obj==eval(repr(obj))
__setattr__
添加(属性/值)对,__setattr__(self, key, value) 示例见附录2
__delattr__
删除(属性/值)对,__delattr__ (self, key)
__getattribute__
获取属性,__getattr__ (self, key)
__getitem__
迭代args元组
__getslice__
获取args元组片段,__getslice__(i,j) = __getitem__(slice(i,j)
3.2.2继承自Object
内建方法
说明
__new__
构造方法
__subclasshook__
__subclasshook__(subclass)
判断subclass是否为本类的子类
方法
说明
__format__
接受一个格式化指示符作为参数,来控制怎样格式化自己。
__format__(self, format_spec) 示例见附录3
__reduce_ex__
__reduce_ex__(self, protocol)
当pickling时被调用,如果没有,则调用__reduce__,若也没有,则此类可以正常pickling
__sizeof__
获取对象占用字节数
装饰器
说明
__hash__
计算对象的hash键值
3.3异常类列表
异常类
描述
BaseException
异常基类
SystemExit
python解释器请求退出
KeyboardInterrupt
用户中断执行(ctl+c)
Exception
常规错误的基类
StopIteration
迭代器没有更多值
GeneratorExit
生成器异常请求退出
ArithmeticError
所有数值计算错误基类
FloatingPointError
浮点计算错误
OverflowError
数值溢出异常
ZeroDivisionError
除以0异常
AssertionError
断言语句异常
AttributeError
对象没有这个属性
EOFError
到达EOF标记
EnvironmentError
操作系统错误基类
IOError
输入输出操作失败
OSError
操作系统错误
WindowsError
Windows系统调用失败
ImportError
导入模块/对象失败
KeyboardInterrupt
用户中断执行(ctrl+c)
LookupError
无效数据查询基类
IndexError
序列中没有此索引
KeyError
映射中没有此键
MemoryError
内存溢出
NameError
未声明/未初始化对象
UnboundLocalError
访问未初始化本地变量
ReferenceError
弱引用访问已回收对象错误
RuntimeError
一般运行时错误
NotImplementatedError
尚未实现的方法
SystemError
一般的解释器系统错误
IndentationError
缩进错误
TabError
Tab和空格混用
SyntaxError
python语法错误
TypeError
对类型无效的操作
ValueError
传入无效的参数
UnicodeError
Unicode相关错误
UnicodeDecodeError
Unicode解码错误
UnicodeEncodeError
Unicode编码错误
UnicodeTranslatError
Unicode转换错误
Warning
警告的基类
DeprecationWarning
关于被弃用特征的警告
FutureWarning
构造将来语义会有改变的警告
OverflowWarning
自动提升长整型警告 2.4弃用
PendingDeprecationWarning
特性将被弃用的警告
RuntimeWarning
可疑的运行时行为的警告
SyntaxWarning
可疑语法的警告
UserWarning
用户代码生成警告
附录:
1、__setstate__ : 修改Foo对象的状态(修改打开的文件,和写入位置)
class Foo(object):
def __init__(self, value, filename):
self.value = value
self.logfile = file(filename, 'w')
def __getstate__(self):
"""Return state values to be pickled."""
f = self.logfile
return (self.value, f.name, f.tell())
def __setstate__(self, state):
"""Restore state from the unpickled state values."""
self.value, name, position = state
f = file(name, 'w')
f.seek(position)
self.logfile = f
2、__setattr__,__delattr__, __getattr__
class storage(dict):
#通过使用__setattr__, __getattr__, __delattr__
#可以重写dict,使之通过“.”调用
def __setattr__(self, key, value):
self[key] = value
def __getattr__ (self, key):
try:
return self[key]
except KeyError, k:
return None
def __delattr__ (self, key):
try:
del self[key]
except KeyError, k:
return None
3、__format__()
def __format__(self, format_spec):
if isinstance(format_spec, unicode):
return unicode(str(self))
else:
return str(self)
- 20130714-Python异常处理机制
- Python-异常处理机制
- Python异常处理机制
- Python异常处理机制
- Python异常处理机制
- python异常处理机制
- Python异常处理机制
- python的异常处理机制
- Python的异常处理机制
- Python的异常处理机制
- python -异常处理机制1
- Python中异常处理机制
- python的异常处理机制
- Python的异常处理机制
- Python 之 异常处理机制
- python的异常处理机制
- Python - Python的异常处理机制
- python(异常处理机制,学习笔记摘要)
- 20130714-支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
- 谁说vi不能用鼠标
- strawberry perl安装,环境变量及模块安装
- Python3中利用Urllib进行表单数据提交(Get,Post)
- Java-子类扩展父类功能
- 20130714-Python异常处理机制
- 用python中htmlParser实现的spider(python spider)
- c++阶乘问题
- 学习mfc的一些方法
- python的get和post方式请求详解
- Hbase shell常用命令
- Unity3d 脚本实现CoverFlow 效果
- catalog start with
- python对XML 操作