Python中except语句的排序

Tri*_*ock 4 python

如果我有异常类的继承层次结构,并且在一个try块中,如果我想在更一般的异常之前尝试处理更具体的(派生)异常,我是否只是将except派生类的语句放在基类的语句之上班级?

这是我要做的吗?

class MyException(BaseException):
    pass

class AnotherException(MyException):
    pass

try:
    raise AnotherException()
except AnotherException:
    print('Caught YetAnotherException!')
except MyException:
    print('Caught MyException!')

print('Done.')
Run Code Online (Sandbox Code Playgroud)

我已经试过了,它有效,但我很惊讶我找不到任何关于此的文档。

Blc*_*ght 5

查看Python 语言参考中的try语句文档。相关位是:

当 try 套件中发生异常时,将开始搜索异常处理程序。此搜索依次检查 except 子句,直到找到与异常匹配的子句。