coding style - try, except

Peter Otten __peter__ at web.de
Wed Feb 25 13:07:11 EST 2009


Steve Holden wrote:

> RGK wrote:
>> 
>> I'm still learning, so eager to see if there is some community wisdom
>> about use of the try/except structures in this situation.
>> 
>> I find myself with some potentially risky stuff and wrap it in a
>> try/except structure with good functional results, though my code leaves
>> me a bit uneasy. Maybe it's just esoteric, but your input is appreciated.
>> 
>> Consider
>> 
>>   try:
>>     do something 1
>>     do something 2
>>     do something 3
>>     do something 4
>>     ...
>>     do something 25
>> 
>>   except:
>>     print "Oops something didn't work"

If you don't want a specific treatment for errors anticipated in 1 and 2
there's no need for try...except at this level at all. Just pass control up
the stack.

>> The risky things are just 1 & 2, and the others are not of concern, but
>> are dependent on 1 & 2.  The alternative is to do:
>> 
>>   wentOkay = True
>>   try:
>>     do something 1
>>     do something 2
>> 
>>   except:
>>     print "Oops something didn't work"
>>     wentOkay = False
>> 
>>   if wentOkay:
>>     do something 3
>>     do something 4
>>      ...
>>     do something 25
>> 
>> 
>> Which seems a bit verbose, but likely the better approach.  Is there
>> some other option I should be considering?
>> 
>> Any input appreciated :)
>> 
> The first form is far preferable: it expresses the logic directly and
> clearly, and is much easier to read than the second, which I personally
> find somewhat contorted.

How about

try:
    # do something that may fail in a way you anticipate
    do something 1
    do something 2
except SpecificError:
    deal with the problem or reraise
else:
    # no errors above
    do something 3...25

Peter



More information about the Python-list mailing list