Exceptions
==========
Even if a statement or expression is syntactically correct, it may
cause an error when an attempt is made to execute it. Errors detected
during execution are called _exceptions_ and are not unconditionally
fatal: you will soon learn how to handle them in Python programs. Most
exceptions are not handled by programs, however, and result in error
messages as shown here:
>>> 10 * (1/0)
Traceback (most recent call last):
File "<stdin>", line 1
ZeroDivisionError: integer division or modulo
>>> 4 + spam*3
Traceback (most recent call last):
File "<stdin>", line 1
NameError: spam
>>> '2' + 2
Traceback (most recent call last):
File "<stdin>", line 1
TypeError: illegal argument type for built-in operation
The last line of the error message indicates what happened. Exceptions
come in different types, and the type is printed as part of the
message: the types in the example are `ZeroDivisionError', `NameError'
and `TypeError'. The string printed as the exception type is the name
of the built-in name for the exception that occurred. This is true for
all built-in exceptions, but need not be true for user-defined
exceptions (although it is a useful convention). Standard exception
names are built-in identifiers (not reserved keywords).
The rest of the line is a detail whose interpretation depends on the
exception type; its meaning is dependent on the exception type.
The preceding part of the error message shows the context where the
exception happened, in the form of a stack backtrace. In general it
contains a stack backtrace listing source lines; however, it will not
display lines read from standard input.
The lists the built-in exceptions and their meanings.