I have a try…except block in my code and When an exception is throw. I really just want to continue with the code because in that case, everything is still able to run just fine. The problem is if you leave the except: block empty or with a #do nothing, it gives you a syntax error. I can’t use continue because its not in a loop. Is there a keyword i can use that tells the code to just keep going?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
except Exception:
pass
Python docs for the pass statement
Method 2
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 don’t 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.
Method 3
There’s a new way to do this coming in Python 3.4:
from contextlib import suppress with suppress(Exception): # your code
Here’s the commit that added it: http://hg.python.org/cpython/rev/406b47c64480
And here’s 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 don’t—you could use with suppress(BaseException).
Edit: Looks like ignored was renamed to suppress before the 3.4 release.
Method 4
Try this:
try:
blah()
except:
pass
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0