Junior — Middle
121
Is het mogelijk om met behulp van een contextmanager een uitzondering die binnen zijn uitvoeringsblok optreedt te verbergen en te onderdrukken?
Bedrijven waar gevraagd werd
Antwoord van AI
sobes.tech AI
Да, в Python контекстный менеджер может подавить исключение, возникшее внутри блока with, если реализовать метод __exit__ так, чтобы он возвращал True. Это говорит интерпретатору, что исключение обработано, и оно не будет проброшено дальше.
Пример:
class SuppressException:
def __enter__(self):
pass
def __exit__(self, exc_type, exc_val, exc_tb):
# Если возникло исключение, подавляем его
return True
with SuppressException():
raise ValueError("Ошибка, но она будет подавлена")
print("Программа продолжает работу")
В этом примере исключение ValueError не прерывает выполнение программы, так как __exit__ возвращает True. Если вернуть False или ничего не возвращать, исключение будет проброшено дальше.