Question

Is it possible to catch any error in Python? I don't care what the specific exceptions will be, because all of them will have the same fallback.

Was it helpful?

Solution

Using except by itself will catch any exception short of a segfault.

try:
    something()
except:
    fallback()

You might want to handle KeyboardInterrupt separately in case you need to use it to exit your script:

try:
    something()
except KeyboardInterrupt:
    return
except:
    fallback()

There's a nice list of basic exceptions you can catch here. I also quite like the traceback module for retrieving a call stack from the exception. Try traceback.format_exc() or traceback.print_exc() in an exception handler.

OTHER TIPS

try:
    # do something
except Exception, e:
    # handle it

For Python 3.x:

try:
    # do something
except Exception as e:
    # handle it

You might want also to look at sys.excepthook:

When an exception is raised and uncaught, the interpreter calls sys.excepthook with three arguments, the exception class, exception instance, and a traceback object. In an interactive session this happens just before control is returned to the prompt; in a Python program this happens just before the program exits. The handling of such top-level exceptions can be customized by assigning another three-argument function to sys.excepthook.

Example:

def except_hook(type, value, tback):
    # manage unhandled exception here
    sys.__excepthook__(type, value, tback) # then call the default handler

sys.excepthook = except_hook
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top