[Python-Dev] Bare except clauses in PEP 348

Shane Hathaway shane at hathawaymix.org
Wed Aug 24 18:42:21 CEST 2005


Niko Matsakis wrote:
>>>> txn = new_transaction()
>> try:
>> txn.begin()
>> rtn = do_work()
>> finally:
>> if exception_occurred():
>> txn.abort()
>> else:
>> txn.commit()
>> return rtn
>>>> Couldn't you just do:
>> txn = new_transaction ()
> try:
> complete = 0
> txn.begin ()
> rtn = do_work ()
> complete = 1
> finally:
> if not complete: txn.abort ()
> else: txn.commit ()
>> and then not need new builtins or anything fancy?

That would work, though it's less readable. If I were looking over code 
like that written by someone else, I'd have verify that the "complete" 
variable is handled correctly in all cases. (As Martin noted, your code 
already has a bug.) The nice try/except/else idiom we have today, with 
a bare except and bare raise, is much easier to verify.
Shane


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /