企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
用户自定义异常也可以是类。利用这个机制可以创建可扩展的异常体系。 以下是两种新的,有效的(语义上的)异常抛出形式,使用 raise 语句: ~~~ raise Class raise Instance ~~~ 第一种形式中,instance 必须是 Class 或其派生类的一个实例。第二种形式是以下形式的简写: ~~~ raise Class() ~~~ 发生的异常其类型如果是 except 子句中列出的类,或者是其派生类,那么它们就是相符的(反过来说--发生的异常其类型如果是异常子句中列出的类的基类,它们就不相符)。例如,以下代码会按顺序打印 B,C,D: ~~~ class B(Exception): pass class C(B): pass class D(C): pass for cls in [B, C, D]: try: raise cls() except D: print("D") except C: print("C") except B: print("B") ~~~ 要注意的是如果异常子句的顺序颠倒过来( execpt B 在最前),它就会打印 B,B,B--第一个匹配的异常被触发。 打印一个异常类的错误信息时,先打印类名,然后是一个空格、一个冒号,然后是用内置函数str() 将类转换得到的完整字符串。