Python Glossary English

все Python 3Исключенияисключение

GeneratorExit

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

Поднимается внутри генератора при его закрытии (.close()). Наследует BaseException.

Синтаксис

raise GeneratorExit

Оно наследуется от BaseException, а не от Exception, и это сделано намеренно: обычный except Exception внутри генератора его не перехватит и не помешает закрытию. Возникает в точке, где генератор остановился на yield, когда вызывают .close() или когда объект собирает сборщик мусора. Ловить его вручную почти никогда не нужно — для освобождения ресурсов хватает try/finally; а если после перехвата генератор снова сделает yield, интерпретатор поднимет RuntimeError о проигнорированном GeneratorExit.

Примеры

try:
    raise GeneratorExit
except GeneratorExit as e:
    print(type(e).__name__)   # → GeneratorExit

См. также

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