Бывает так, что какой-либо метод при работе программы выдает исключение, но нам не надо его обрабатывать каким-нибудь хитрым образом, а достаточно лишь подавить исключение и идти дальше.
Это можно сделать с помощью классического try-except, но есть и более элегантный способ. Когда это может пригодиться и как пользоваться? Об этом и поговорим в статье.
Зачем подавлять исключения?
Делать это без надобности строго не рекомендуется. Но бывают моменты, когда мы знаем, почему вызывается исключение и уверены, что оно не несет никаких рисков для нас. Поэтому мы временно можем его пропустить.
Конкретный пример:
Допустим, вы пишете автотест, и после создания некоторой сущности и выполнения манипуляций с ней, вам надо эту сущность удалить.
Все отрабатывает корректно, вот только запрос на удаление зависает в статусе pending и ответ не приходит, вызывается исключение по таймауту, но при этом сущность удаляется.
Зная все это, мы можем временно подавить исключение до решения проблемы с запросом и пустить тест в работу.
Как это сделать?
Рассмотрим 2 способа: канонический try-except и contextlib.suppress
Классический способ
contextlib.suppress
Синтаксис
contextlib.suppress(*exceptions)
Пример:
suppress возвращает контекстный менеджер, который подавляет переданные исключения, если они встречаются в теле выражения with.
Данный контекстный менеджер предлагает нам удобный способ работы с исключениями. Но не стоит забывать, что suppress cледует использовать только в специфических случаях.
***
Присоединяйтесь ко мне в Telegram: https://t.me/python3_with_love. Там есть все, и читать код намного удобнее.