все 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Сообщить о неточности