I've same question and found this via Google search. I know this is a 10 years old post but people like me might also find this post.
Now the latest Python document has clear instructions about derived exception instance:
https://docs.python.org/3/tutorial/errors.html#handling-exceptions
A class in an except clause matches exceptions which are instances of the class itself or one of its derived classes.
An except clause listing a derived class does not match instances of its base classes.
The first matching except clause is triggered.
I'd say it's a lot more clear than the terms like "in turn" in old documents.