annotate a traceback

2009-10-29 Thread Robin Becker
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?
--
Robin Becker

--
http://mail.python.org/mailman/listinfo/python-list


Re: annotate a traceback

2009-10-29 Thread Diez B. Roggisch
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
-- 
http://mail.python.org/mailman/listinfo/python-list