Exceptions are just regular Python objects that inherit from the built-in
BaseException. A Python script can use the
raise statement to interrupt execution, causing Python to print a stack trace of the call stack at that point and a representation of the exception instance. For example:
>>> def failing_function(): ... raise ValueError('Example error!') >>> failing_function() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in failing_function ValueError: Example error!
which says that a
ValueError with the message
'Example error!' was raised by our
failing_function(), which was executed in the interpreter.
Calling code can choose to handle any and all types of exception that a call can raise:
>>> try: ... failing_function() ... except ValueError: ... print('Handled the error') Handled the error
You can get hold of the exception objects by assigning them in the
except... part of the exception handling code:
>>> try: ... failing_function() ... except ValueError as e: ... print('Caught exception', repr(e)) Caught exception ValueError('Example error!',)
A complete list of built-in Python exceptions along with their descriptions can be found in the Python Documentation: https://docs.python.org/3.5/library/exceptions.html. And here is the full list arranged hierarchically: Exception Hierarchy.