Middle
58
Peut-on lancer une exception depuis l'extérieur dans un générateur ? Quels mécanismes existent pour cela ?
Entreprises à qui on a demandé
Réponse de l'IA
sobes.tech IA
Да, в 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, что можно использовать для корректного завершения генератора.