半尾

半尾的博客

他的个人主页  他的博客

Python基础:异常对象

半尾  2010年05月30日 星期日 09:09 | 2049次浏览 | 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哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号