try-except syntax

Rob Gaddi rgaddi at highlandtechnology.invalid
Thu Apr 5 17:34:15 EDT 2018


On 04/05/2018 02:04 PM, ElChino wrote:
> 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.

     try:
       _x, pathname, _y = imp.find_module (mod, mod_path)
       return ("%s" % pathname)
     except (ImportError, RuntimeError):
       pass
       return ("<unknown>")

That handles the identical case.  C-style fall-throughs where you have 
one switch have just a bit of code before the fall-through kicks in (the 
slightly non-identical case) is often the source of disastrous code errors.

-- 
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order.  See above to fix.


More information about the Python-list mailing list