Tuesday, 29 August 2017

python - Catch multiple exceptions in one line (except block)



I know that I can do:



try:
# do something that may fail
except:

# do this if ANYTHING goes wrong


I can also do this:



try:
# do something that may fail
except IDontLikeYouException:
# say please
except YouAreTooShortException:

# stand on a ladder


But if I want to do the same thing inside two different exceptions, the best I can think of right now is to do this:



try:
# do something that may fail
except IDontLikeYouException:
# say please
except YouAreBeingMeanException:

# say please


Is there any way that I can do something like this (since the action to take in both exceptions is to say please):



try:
# do something that may fail
except IDontLikeYouException, YouAreBeingMeanException:
# say please



Now this really won't work, as it matches the syntax for:



try:
# do something that may fail
except Exception, e:
# say please


So, my effort to catch the two distinct exceptions doesn't exactly come through.




Is there a way to do this?


Answer



From Python Documentation:




An except clause may name multiple exceptions as a parenthesized tuple, for example




except (IDontLikeYouException, YouAreBeingMeanException) as e:

pass


Or, for Python 2 only:



except (IDontLikeYouException, YouAreBeingMeanException), e:
pass


Separating the exception from the variable with a comma will still work in Python 2.6 and 2.7, but is now deprecated and does not work in Python 3; now you should be using as.



No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...