Back to questions
Лига Цифровой Экономики
Middle
4
Можно ли пробросить исключение внутрь генератора извне? Какие механизмы для этого есть?
Companies where asked
Answer from AI
sobes.tech AI
Да, в Python можно пробросить исключение внутрь генератора извне с помощью метода throw(). Этот метод позволяет передать исключение в точку, где генератор сейчас приостановлен, и обработать его внутри генератора.
Пример:
def gen():
try:
yield 1
yield 2
except ValueError:
yield 'Обработано ValueError'
g = gen()
print(next(g)) # Выведет 1
print(g.throw(ValueError)) # Пробрасываем исключение внутрь генератора
В результате генератор поймает ValueError и сможет обработать его, например, вернуть специальное значение.
Также есть метод close(), который внутри генератора вызывает GeneratorExit, что можно использовать для корректного завершения генератора.