如何确保烧瓶错误处理程序获得最具体的异常?
从一些简单的测试和查看源代码,看起来烧瓶错误处理代码只是采用给定异常类型的第一个寄存器错误处理程序而不是最可能的特定类型。
我想答案是将Exception
的错误处理程序放在最后?
答案 0 :(得分:4)
错误处理程序遵循异常类 MRO 或方法解析顺序,并按顺序查找处理程序;首先是特定的异常类型,然后是直接的父类等,一直到BaseException
和object
。
没有必要订购任何东西;如果您为Exception
注册了一个处理程序,那么它将被用于没有找到更具体的处理程序的任何异常。