Python: Как игнорировать исключение и продолжить?

У меня есть попытка... кроме блока в моем коде и когда исключение бросить. Я действительно просто хочу продолжить с кодом, потому что в этом случае все по-прежнему может работать очень хорошо. Проблема в том, что если вы оставите блок исключений пустым или с #do ничего, это даст вам синтаксическую ошибку. Я не могу использовать продолжить, потому что это не в цикле. Есть ли ключевое слово, которое я могу использовать, чтобы код продолжал работать?

4 ответа

Решение
except:
    pass

Общий ответ

Стандарт "ноп" в Python является pass заявление:

try:
    do_something()
except Exception:
    pass

С помощью except Exception вместо голого except избегать ловли исключений, таких как SystemExit, KeyboardInterrupt и т.п.

Python 2

Из-за того, что последнее выброшенное исключение запоминалось в Python 2, некоторые объекты, участвующие в операторе выбрасывания исключений, сохраняются в течение неопределенного времени (фактически, до следующего исключения). В случае, если это важно для вас и (как правило) вам не нужно запоминать последнее выброшенное исключение, вы можете сделать следующее вместо pass:

try:
    do_something()
except Exception:
    sys.exc_clear()

Это очищает последнее выброшенное исключение.

Python 3

В Python 3 переменная, которая содержит экземпляр исключения, удаляется при выходе из except блок. Даже если переменная содержала значение ранее, после ввода и выхода except блок снова становится неопределенным.

В Python 3.4 появился новый способ сделать это:

from contextlib import suppress

with suppress(Exception):
  # your code

Вот коммит, который его добавил: http://hg.python.org/cpython/rev/406b47c64480

И вот автор, Рэймонд Хеттингер, говорит об этом и всякой другой горячности Python (актуально немного в 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go

Если вы хотели подражать голому except ключевое слово, а также игнорировать такие вещи, как KeyboardInterrupt- хотя вы обычно не - вы могли бы использовать with suppress(BaseException),

Редактировать: выглядит как ignored был переименован в suppress до выпуска 3.4.

Попробуй это:

try:
    blah()
except:
    pass
Другие вопросы по тегам