[Python-Dev] Handle errors in cleanup code

Stefan Ring stefanrin at gmail.com
Tue Jun 13 04:32:48 EDT 2017


On Tue, Jun 13, 2017 at 2:26 AM, Nathaniel Smith <njs at pobox.com> wrote:
> On Mon, Jun 12, 2017 at 6:29 AM, Stefan Ring <stefanrin at gmail.com> wrote:
>>
>> > Yury in the comment for PR 2108 [1] suggested more complicated code:
>> >
>> >     do_something()
>> >     try:
>> >         do_something_other()
>> >     except BaseException as ex:
>> >         try:
>> >             undo_something()
>> >         finally:
>> >             raise ex
>>
>> And this is still bad, because it loses the back trace. The way we do it is:
>>
>>     do_something()
>>     try:
>>         do_something_other()
>>     except BaseException as ex:
>>         tb = sys.exc_info()[2]
>>         try:
>>             undo_something()
>>         finally:
>>             raise ex, None, tb
>
> Are you testing on python 2? On Python 3 just plain 'raise ex' seems
> to give a sensible traceback for me...

Yes, on Python 2.

Interesting to know that this has changed in Python 3. I'll check this
out immediately.


More information about the Python-Dev mailing list