Python: How to ignore an exception and proceed?
Python: How to ignore an exception and proceed?
except Exception:
pass
Python docs for the pass statement
Generic answer
The standard nop in Python is the pass
statement:
try:
do_something()
except Exception:
pass
Using except Exception
instead of a bare except
avoid catching exceptions like SystemExit
, KeyboardInterrupt
etc.
Python 2
Because of the last thrown exception being remembered in Python 2, some of the objects involved in the exception-throwing statement are being kept live indefinitely (actually, until the next exception). In case this is important for you and (typically) you dont need to remember the last thrown exception, you might want to do the following instead of pass
:
try:
do_something()
except Exception:
sys.exc_clear()
This clears the last thrown exception.
Python 3
In Python 3, the variable that holds the exception instance gets deleted on exiting the except
block. Even if the variable held a value previously, after entering and exiting the except
block it becomes undefined again.
Python: How to ignore an exception and proceed?
Theres a new way to do this coming in Python 3.4:
from contextlib import suppress
with suppress(Exception):
# your code
Heres the commit that added it: http://hg.python.org/cpython/rev/406b47c64480
And heres the author, Raymond Hettinger, talking about this and all sorts of other Python hotness (relevant bit at 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go
If you wanted to emulate the bare except
keyword and also ignore things like KeyboardInterrupt
—though you usually dont—you could use with suppress(BaseException)
.
Edit: Looks like ignored
was renamed to suppress
before the 3.4 release.