学无止境
我们为梦想前行!

python的异常也是类

python的异常也是类,用户自定义异常也可以是类。利用这个机制可以创建可扩展的异常体系。

以下是两种新的,有效的(语义上的)异常抛出形式,使用 raise 语句:

raise Class, instance

raise instance

第一种形式中,instance 必须是 Class 或其派生类的一个实例。第二种形式是以下形式的简写:

raise instance.__class__, instance

发生的异常其类型如果是 except 子句中列出的类,或者是其派生类,那么它们就是相符的(反过来说--发生的异常其类型如果是异常子句中列出的类的基类,它们就不相符)。例如,以下代码会按顺序打印 B,C,D:

class B:
    pass
class C(B):
    pass
class D(C):
    pass

for c in [B, C, D]:
    try:
        raise c()
    except D:
        print "D"
    except C:
        print "C"
    except B:
        print "B"

要注意的是如果异常子句的顺序颠倒过来( execpt B 在最前),它就会打印 B,B,B,第一个匹配的异常被触发。

打印一个异常类的错误信息时,先打印类名,然后是一个空格、一个冒号,然后是用内置函数 str() 将类转换得到的完整字符串。

赞(0)
转载请注明出处链接:Pycharm » python的异常也是类

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址