[Python-3000] self-contained exceptions

Collin Winter collinw at gmail.com
Wed Jan 10 18:46:31 CET 2007


On 1/10/07, Josiah Carlson <jcarlson at uci.edu> wrote:
> According to the translation rules Colin has previously provided...

Phillip came up the translation, I just implemented it.
> re = get_resource()
> ...
> try:
> something()
> except RareException as re:
> ...
> ...
> re.use_resource()
>> is translated into...
>> re = get_resource()
> ...
> try:
> try:
> something()
> except RareException:
> re = <current exception>
> ...
> finally:
> re = None
> del re
> ...
> re.use_resource()
>> That is, the 're = None; del re' stuff is executed regardless of whether
> the except body is executed. The user would be notified right away.

The correct translation is
 re = get_resource()
 ...
 try:
 something()
 except RareException as re:
 try:
 ...
 finally:
 re = None
 del re
 ...
 re.use_resource()
So 're = None; del re;' is *only* executed if the except body is executed.
Collin Winter


More information about the Python-3000 mailing list

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