try -> except -> else -> except?
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Mon Jul 6 13:48:29 EDT 2009
David House a écrit :
> Hi all,
>
> I'm looking for some structure advice. I'm writing something that
> currently looks like the following:
>
> try:
> <short amount of code that may raise a KeyError>
> except KeyError:
> <error handler>
> else:
> <nontrivial amount of code>
>
> This is working fine. However, I now want to add a call to a function
> in the `else' part that may raise an exception, say a ValueError.
If your error handler terminates the function (which is usually the case
when using the else clause), you can just skip the else statement, ie:
try:
<short amount of code that may raise a KeyError>
except KeyError:
<error handler with early exit>
<nontrivial amount of code>
Then adding one or more try/except is just trivial.
> So I
> was hoping to do something like the following:
>
> try:
> <short amount of code that may raise a KeyError>
> except KeyError:
> <error handler>
> else:
> <nontrivial amount of code>
> except ValueError:
> <error handler>
>
> However, this isn't allowed in Python.
Nope. But this is legal:
try:
<short amount of code that may raise a KeyError>
except KeyError:
<error handler>
else:
try:
<nontrivial amount of code>
except ValueError:
<error handler>
> An obvious way round this is to move the `else' clause into the `try'
"obvious" but not necessarily the best thing to do.
(snip - cf above for simple answers)
More information about the Python-list
mailing list