Python Glossary English

Python 3.5+Исключенияисключение

RecursionError

встроенные исключения

Вызывается при превышении максимальной глубины рекурсии (по умолчанию 1000). Подкласс RuntimeError.

Синтаксис

raise RecursionError('...')

Почти всегда причина не в маленьком лимите, а в пропущенном или недостижимом базовом случае; поднимать sys.setrecursionlimit() безопасно только если рекурсия точно конечная — иначе процесс упадёт уже по-настоящему, без шанса перехватить. Лимит один на весь стек интерпретатора, поэтому кадры библиотечных вызовов расходуют его наравне с вашими. И раз это подкласс RuntimeError, except RuntimeError поймает его заодно — иногда неожиданно.

Примеры

def infinite():
    return infinite()
try:
    infinite()
except RecursionError:
    print('слишком глубокая рекурсия')
    import sys
    sys.setrecursionlimit(2000)  # изменить лимит

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности