inspectorG4dget inspectorG4dget - 2 months ago 7
Python Question

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 IDontLikeYourFaceException:
# put on makeup or smile
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 https://docs.python.org/2/tutorial/errors.html#handling-exceptions: "An except clause may name multiple exceptions as a parenthesized tuple, for example":

except (IDontLikeYouException, YouAreBeingMeanException) as 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.