Полезно ловить только очень узкий диапазон типов. «Исключение» является слишком общим - вы в конечном итоге поймаете не только те ошибки, которые вы запланировали, но и другие ошибки, которые могут маскировать ошибки в вашем коде, которые будут быстрее диагностировать, если они вообще не были обнаружены или, возможно, Лучше иметь дело с одним обработчиком исключений очень высокого уровня.
Сказав, что начиная с Python2.6 перехват Exception стал намного более разумным, потому что все исключения, которые вы не хотите перехватывать (SystemExit, KeyboardInterrupt), больше не наследуются от Exception. Вместо этого они наследуют от общего BaseException. Это сделано специально для того, чтобы отлов Exception был относительно безвредным, поскольку это такая распространенная идиома.
См. PEP 3110 для подробностей и планов на будущее.