Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

traceback.format_exc/print_exc returns None when expecting traceback

I can't figure out why traceback.format_exc() is returning "None" in the following example:

#!/usr/bin/env python

import sys
import traceback

def my_excepthook(type, value, tb):
    print type.__name__
    print value
    # the problem: why does this return "None"?
    print traceback.format_exc(tb) # see http://docs.python.org/library/traceback.html#traceback.format_exc

sys.excepthook = my_excepthook # see http://docs.python.org/library/sys.html#sys.excepthook

# some code to generate a naturalistic exception
a = "text"
b = 5
error = a + b

Using Python 2.7.1, I get the following output:

TypeError
cannot concatenate 'str' and 'int' objects
None

Instead of "None" on the 3rd line, I'd expect to get what happens when I comment out the sys.excepthook line:

Traceback (most recent call last):
  File "log-test.py", line 17, in <module>
    error = a+b 
like image 646
Justin Watt Avatar asked Mar 12 '12 22:03

Justin Watt


1 Answers

Try to change like this in my_excepthook:

print "".join(traceback.format_exception(type, value, tb))
like image 99
PasteBT Avatar answered Nov 01 '22 23:11

PasteBT