Gabriel Genellina a écrit :
En Wed, 17 Mar 2010 09:42:06 -0300, Pascal Chambon
<chambon.pas...@gmail.com> escribió:
traceback functions indeed allow the manipulation of exception
tracebacks,
but the root problem is that anyway, since that traceback is incomplete,
your "traceback.format_exc().splitlines()" will only provide frames for
callee (downward) functions, not caller (upward) ones, starting from the
exception catching frame.
Either I don't understand what you mean, or I can't reproduce it:
Allright, here is more concretely the problem :
<code>
import logging
def a(): return b()
def b(): return c()
def c():
try:
return d()
except:
logging.exception("An error")
def d(): raise ValueError
def main():
logging.basicConfig(level=logging.DEBUG)
a()
main()
</code>
OUTPUT:
>>>
ERROR:root:An error
Traceback (most recent call last):
File "C:/Users/Pakal/Desktop/aaa.py", line 7, in c
return d()
File "C:/Users/Pakal/Desktop/aaa.py", line 11, in d
def d(): raise ValueError
ValueError
>>>
As you see, the traceback only starts from function c, which handles the
exception.
It doesn't show main(), a() and b(), which might however be (and are, in
my case) critical to diagnose the severity of the problem (since many
different paths would lead to calling c()).
So the question is : is that possible to enforce, by a way or another,
the retrieval of the FULL traceback at exception raising point, instead
of that incomplete one ?
Thank you for your help,
regards,
Pascal
--
http://mail.python.org/mailman/listinfo/python-list