半尾 2010年05月30日 星期日 09:09 | 2124次浏览 | 0条评论
关于异常对
一、字符串异常。
1.版本2.5中,异常虽然不建议用字符串,但还是有的,这里有一点:
异常是字符串对象,而不是字符串值。
SO:
myexc = 'My exception string'
temp = myexc
other = 'My exception string'
raise myexc
raise temp
raise other
因为temp myexc两个变量只是对'My exception string'字符串对象的引用,所以两个raise语句抛出的异常都是一样的'My exception string'字符串。而other变量是另外一个对象,虽然值相同,但是抛出的并不是同一个异常。
字符串异常是以 简单对象识别 来匹配的: 引发的异常是Python的is测试(而不是==)来匹配exception分句的。
2.版本2.6以后 使用字符串对象会提示:
exceptions must be old-style classes or derived from BaseException, not str
翻译过来就是:异常必须是类的形式或者派生自BaseException异常基类,而不是字符串。
二、基于类的异常
类异常:异常组织成类的形式,并且可以参与类的继承层次形式形成类异常树结构。 当try语句的exception分句列出一个超类时,就可以捕捉该超类的实例,以及类树中所有较低位置的子类的实例 。并且更好的 支持异常状态信息(附加在实例上)。
带来的好处:维护类异常。
新增加的异常只需在异常类库中扩展,然后捕捉异常类库的超类就可以了。
三、内置异常类树结构:
内置Exception: http://docs.python.org/library/index.html
内置Exception类树 http://docs.python.org/library/exceptions.html#exception-hierarchy
四、类异常错误消息可以通过__repr__或者__str__运算符重载方式自定义显示方法。
五、类异常传递附加信息:
异常类定义了实例的属性、方法,作为额外信息传递给异常处理器。
Zeuux © 2024
京ICP备05028076号
暂时没有评论