try-except syntax

Ben Bacarisse ben.lists at bsb.me.uk
Thu Apr 5 17:51:44 EDT 2018


ElChino <elchino at cnn.cn> writes:

> I'm trying to simplify a try-except construct. E.g. how come
> this:
>   try:
>     _x, pathname, _y = imp.find_module (mod, mod_path)
>     return ("%s" % pathname)
>   except ImportError:
>     pass
>   except RuntimeError:
>     pass
>     return ("<unknown>")
>
> Cannot be simplified into this:
>   try:
>     _x, pathname, _y = imp.find_module (mod, mod_path)
>     return ("%s" % pathname)
>   except ImportError:
>   except RuntimeError:
>     pass
>     return ("<unknown>")
>
> Like a "fall-through" in a C-switch statement.

The except parts don't fall through, and each one needs a "suite".
Also, the "pass" before the return is mysterious which makes me think
there's an indent error in what you posted.

Anyway, to coalesce two or more exception handlers, you are probably
looking for

  except (ImportError, RuntimeError):

which matches both.

-- 
Ben.


More information about the Python-list mailing list