I have a problem with my code in the try block. To make it easy this is my code:
try: code a code b #if b fails, it should ignore, and go to c. code c #if c fails, go to d code d except: pass
Is something like this possible?
Advertisement
Answer
You’ll have to make this separate try
blocks:
try: code a except ExplicitException: pass try: code b except ExplicitException: try: code c except ExplicitException: try: code d except ExplicitException: pass
This assumes you want to run code c
only if code b
failed.
If you need to run code c
regardless, you need to put the try
blocks one after the other:
try: code a except ExplicitException: pass try: code b except ExplicitException: pass try: code c except ExplicitException: pass try: code d except ExplicitException: pass
I’m using except ExplicitException
here because it is never a good practice to blindly ignore all exceptions. You’ll be ignoring MemoryError
, KeyboardInterrupt
and SystemExit
as well otherwise, which you normally do not want to ignore or intercept without some kind of re-raise or conscious reason for handling those.