[Python-Dev] Handle errors in cleanup code
Nathaniel Smith
njs at pobox.com
Mon Jun 12 20:26:07 EDT 2017
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...
-n
--
Nathaniel J. Smith -- https://vorpus.org
More information about the Python-Dev
mailing list