How can I obtain the exception object on a generlized except statement?
Duncan Booth
duncan.booth at invalid.invalid
Mon Jun 11 02:58:01 EDT 2007
Chris Allen <ca.allen at gmail.com> wrote:
> I am confused on one aspect of exception handling. If you specify the
> exception object type to match in an except statement it is possible
> to also obtain the exception object itself, but I can't figure out how
> to get the exception object when I don't specify a match.
In most cases you can just catch Exception. If you want to be sure to
catch deprecated string exceptions also then use sys.exc_info().
try:
... something ...
except Exception, e:
print e
Also what you want to do with it when you've caught it makes a
difference:
If you are planning on logging a stack backtrace then you'll want the
traceback as well as the exception, so sys.exc_info() might be indicated
except that in that case you'll be better off using logging.exception()
instead.
try:
... something ...
except:
logging.exception("Unexpected error")
If you are just planning on swallowing the exception then you don't want
any of these: you want to catch the specific exceptions that you expect
to be raised.
> >>> except (),msg:
Using an empty tuple for the exception specification won't catch any
exceptions. Not very useful if the tuple is a literal, but it could be
useful in some obscure situations (e.g. an except clause to handle
exceptions declared in a specific DLL which might not always be
present).
More information about the Python-list
mailing list