problem with exception output

Mark Hammond mhammond at skippinet.com.au
Mon Feb 25 04:41:36 EST 2002


Felix Seeger wrote:
> Hi
> 
> I can't get the hole exception if my script (cgi) fails.
> I use this to get every exception:
> 
> except:
>         print '<table width="100%">'
>         trace = traceback.extract_tb(sys.exc_traceback)
> 
>         print '<tr><td>Exception Type:</td><td>', sys.exc_type, '</td></tr>'
>         print '<tr><td>Exception Value:</td><td>', sys.exc_value, '</td></tr>'
>         for filename, lineno, function, message in trace:
>                 print '<tr><td>Filename:</td><td>', filename, '</td></tr>'
>                 print '<tr><td>Error message:</td><td>', message, '</td></tr>'
>                 print '<tr><td>Line:</td><td>', lineno, '</td></tr>'
>                 print '<tr><td>Function:</td><td>', function, '</td></tr>'
> 
>         print '<tr><td>Complete Stack:</td></tr>'
>         print '<tr><td><hr></td></tr>'
>         print '<tr><td colspan="2">', traceback.print_stack(), '</td></tr>'
>         print '<tr><td><hr></td></tr>'
> 
>         print '<tr><td>Complete Traceback:</td></tr>'
>         print '<tr><td><hr></td></tr>'
>         print '<tr><td colspan="2">', traceback.print_exc(), '</td></tr>'
>         print '<tr><td><hr></td></tr>'
>         print '</table>'
> 
> Everything works fine but the print_stack() and print_exc() prints None.

These functions print the information to sys.stderr/out, rather than 
returning the value as a string.  You probably want something like:

f = StringIO.StringIO()
f.write("<tr><etc>")
traceback.print_exc(file=f)
f.write("</etc></tr>")

etc.

Mark.




More information about the Python-list mailing list