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

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

Ответ 2

Общий ответ

Стандартным "nop" в Python является оператор pass:

try:
    do_something()
except Exception:
    pass

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

Python 2

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

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

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

Python 3

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

Ответ 3

В 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.

Ответ 4

Попробуйте следующее:

try:
    blah()
except:
    pass