Możesz zajrzeć wyjątkiem samego:
>>> def f():
... f()
...
>>> try:
... f()
... except RuntimeError as re:
... print re.args, re.message
...
('maximum recursion depth exceeded',) maximum recursion depth exceeded
Nie sądzę, że można rozróżnić między tym i coś po prostu udając (Runtime) wyjątek rekurencji dogłębnej-przekroczony, choć. message
jest przestarzałe, więc prawdopodobnie najlepszym rozwiązaniem jest args
i jest zgodny z Python-3.
Aktualizacja: w Pythonie 3.5, istnieje specyficzny RecursionError
które można złapać zamiast.