annotate a traceback

Diez B. Roggisch deets at nospam.web.de
Thu Oct 29 11:29:30 EDT 2009


Robin Becker wrote:

> I want to annotate a traceback in routine A which is raised in B. Useful
> information in A is not available in B
> 
> I propose to use something like
> 
> def A(info):
>      try:
>          B()
>      except:
>          t,v,b=sys.exc_info()
>          v.args = (' '.join(map(str,v.args))+', info=%r' % info,)
>          raise
> 
> is this a reasonable approach?

I think a custom exception that takes the old sys.exc_info() and
encapsulates it would be better. Java has this, and it allows you to convey
different information without losing the original traceback.

Diez



More information about the Python-list mailing list