Formatting exceptions as Python does

If your exception object is exc, then:

  • The part before the colon is type(exc).__name__.
  • The part after the colon is str(exc).

So you can just do this:

print('{}: {}'.format(type(exc).__name__, exc))

Making tdelaney's answer formal and demonstrating the difference...

Strings

#test.py
import traceback

try :
    raise TypeError("Wrong Type baby!")

except Exception as e:
    print( "EXCEPTION FORMAT PRINT:\n{}".format( e ) )
    print( "EXCEPTION TRACE  PRINT:\n{}".format( "".join(traceback.format_exception(type(e), e, e.__traceback__))

Resulting console output

EXCEPTION FORMAT PRINT:
Wrong Type baby!
EXCEPTION TRACE  PRINT:
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    raise TypeError("Wrong Type baby!")
TypeError: Wrong Type baby!

Logging

If you're in the context of logging there's also the exception method and exc_info kwarg that will do the formatting for you. We should note that the debug and info level log messages are ignored out on account of the root logger holding warning as its default log level.

# logTest.py
import logging

try :
    raise ValueError("my bad value")
except Exception as e :
    logging.exception( e )
    logging.debug("\n{}\nDEBUG LEVEL EXAMPLE".format('-'*30), exc_info=e)
    logging.info("\n{}\nINFO LEVEL EXAMPLE".format('-'*30), exc_info=e)
    logging.warning("\n{}\nWARNING LEVEL EXAMPLE".format('-'*30), exc_info=e)
    logging.error("\n{}\nERROR LEVEL EXAMPLE".format('-'*30), exc_info=e)

with the resulting console output...

ERROR:root:my bad value
Traceback (most recent call last):
  File "/Users/me/logTest.py", line 5, in <module>
    raise ValueError("my bad value")
ValueError: my bad value
WARNING:root:
------------------------------
WARNING LEVEL EXAMPLE
Traceback (most recent call last):
  File "/Users/me/logTest.py", line 5, in <module>
    raise ValueError("my bad value")
ValueError: my bad value
ERROR:root:
------------------------------
ERROR LEVEL EXAMPLE
Traceback (most recent call last):
  File "/Users/me/logTest.py", line 5, in <module>
    raise ValueError("my bad value")
ValueError: my bad value