Even if it is possible to catch a class which is not a BaseException in python 2, this rule is still a bug for the following reasons:
* BaseException exists in Python 2 too. There is no reason not to use it. It is advised to use exceptions derived from BaseException since python 2.5 released in 2006.
* Python 2 is not maintained anymore and there are tools enabling developpers to migrate from python 2 to python 3. When developers migrate this will become a bug.
* We already have RSPEC-5632 as a Bug and nobody complains. Let’s remain consistent. If we change the rule to code smell we have to change this other rule too.
* old style classes are the only exception in python 2. Trying to raise a string or a list will fail in in both python 2 and python 3. This exception would be a corner case.