Я почти уверен, что проблема с 2.4 вызвана исключениями, являющимися классами старого стиля.
$ python2.4
Python 2.4.4 (#1, Feb 19 2009, 09:13:34)
>>> type(dict)
<type 'type'>
>>> type(Exception)
<type 'classobj'>
>>> type(Exception())
<type 'instance'>
$ python2.5
Python 2.5.4 (r254:67916, Feb 17 2009, 23:11:16)
>>> type(Exception)
<type 'type'>
>>> type(Exception())
<type 'exceptions.Exception'>
В обеих версиях, как говорится в сообщении, исключения могут быть классами, экземплярами (классов старого стиля) или строками (не рекомендуется).
Начиная с версии 2.5, иерархия исключений, наконец, основана на новых классах стилей. И экземпляры новых стилевых классов, которые наследуются от BaseException, теперь тоже разрешены.
Но в 2.4 множественное наследование от Exception (класс старого стиля) и dict (класс нового стиля)
в результате получается новый класс стилей, который не допускается как исключение (смешивание старых и новых классов стилей в любом случае, вероятно, плохо).