mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 03:22:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			172 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
\section{Built-in Exceptions}
 | 
						|
 | 
						|
Exceptions are string objects.  Two distinct string objects with the
 | 
						|
same value are different exceptions.  This is done to force programmers
 | 
						|
to use exception names rather than their string value when specifying
 | 
						|
exception handlers.  The string value of all built-in exceptions is
 | 
						|
their name, but this is not a requirement for user-defined exceptions
 | 
						|
or exceptions defined by library modules.
 | 
						|
 | 
						|
The following exceptions can be generated by the interpreter or
 | 
						|
built-in functions.  Except where mentioned, they have an `associated
 | 
						|
value' indicating the detailed cause of the error.  This may be a
 | 
						|
string or a tuple containing several items of information (e.g., an
 | 
						|
error code and a string explaining the code).
 | 
						|
 | 
						|
User code can raise built-in exceptions.  This can be used to test an
 | 
						|
exception handler or to report an error condition `just like' the
 | 
						|
situation in which the interpreter raises the same exception; but
 | 
						|
beware that there is nothing to prevent user code from raising an
 | 
						|
inappropriate error.
 | 
						|
 | 
						|
\renewcommand{\indexsubitem}{(built-in exception)}
 | 
						|
 | 
						|
\begin{excdesc}{AttributeError}
 | 
						|
% xref to attribute reference?
 | 
						|
  Raised when an attribute reference or assignment fails.  (When an
 | 
						|
  object does not support attribute references or attribute assignments
 | 
						|
  at all, \code{TypeError} is raised.)
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{EOFError}
 | 
						|
% XXXJH xrefs here
 | 
						|
  Raised when one of the built-in functions (\code{input()} or
 | 
						|
  \code{raw_input()}) hits an end-of-file condition (\EOF{}) without
 | 
						|
  reading any data.
 | 
						|
% XXXJH xrefs here
 | 
						|
  (N.B.: the \code{read()} and \code{readline()} methods of file
 | 
						|
  objects return an empty string when they hit \EOF{}.)  No associated value.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{IOError}
 | 
						|
% XXXJH xrefs here
 | 
						|
  Raised when an I/O operation (such as a \code{print} statement, the
 | 
						|
  built-in \code{open()} function or a method of a file object) fails
 | 
						|
  for an I/O-related reason, e.g., `file not found', `disk full'.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{ImportError}
 | 
						|
% XXXJH xref to import statement?
 | 
						|
  Raised when an \code{import} statement fails to find the module
 | 
						|
  definition or when a \code{from {\rm \ldots} import} fails to find a
 | 
						|
  name that is to be imported.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{IndexError}
 | 
						|
% XXXJH xref to sequences
 | 
						|
  Raised when a sequence subscript is out of range.  (Slice indices are
 | 
						|
  silently truncated to fall in the allowed range; if an index is not a
 | 
						|
  plain integer, \code{TypeError} is raised.)
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{KeyError}
 | 
						|
% XXXJH xref to mapping objects?
 | 
						|
  Raised when a mapping (dictionary) key is not found in the set of
 | 
						|
  existing keys.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{KeyboardInterrupt}
 | 
						|
  Raised when the user hits the interrupt key (normally
 | 
						|
  \kbd{Control-C} or
 | 
						|
\key{DEL}).  During execution, a check for interrupts is made regularly.
 | 
						|
% XXXJH xrefs here
 | 
						|
  Interrupts typed when a built-in function \code{input()} or
 | 
						|
  \code{raw_input()}) is waiting for input also raise this exception.  No
 | 
						|
  associated value.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{MemoryError}
 | 
						|
  Raised when an operation runs out of memory but the situation may
 | 
						|
  still be rescued (by deleting some objects).  The associated value is
 | 
						|
  a string indicating what kind of (internal) operation ran out of memory.
 | 
						|
  Note that because of the underlying memory management architecture
 | 
						|
  (\C{}'s \code{malloc()} function), the interpreter may not always be able
 | 
						|
  to completely recover from this situation; it nevertheless raises an
 | 
						|
  exception so that a stack traceback can be printed, in case a run-away
 | 
						|
  program was the cause.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{NameError}
 | 
						|
  Raised when a local or global name is not found.  This applies only
 | 
						|
  to unqualified names.  The associated value is the name that could
 | 
						|
  not be found.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{OverflowError}
 | 
						|
% XXXJH reference to long's and/or int's?
 | 
						|
  Raised when the result of an arithmetic operation is too large to be
 | 
						|
  represented.  This cannot occur for long integers (which would rather
 | 
						|
  raise \code{MemoryError} than give up).  Because of the lack of
 | 
						|
  standardization of floating point exception handling in \C{}, most
 | 
						|
  floating point operations also aren't checked.  For plain integers,
 | 
						|
  all operations that can overflow are checked except left shift, where
 | 
						|
  typical applications prefer to drop bits than raise an exception.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{RuntimeError}
 | 
						|
  Raised when an error is detected that doesn't fall in any of the
 | 
						|
  other categories.  The associated value is a string indicating what
 | 
						|
  precisely went wrong.  (This exception is a relic from a previous
 | 
						|
  version of the interpreter; it is not used any more except by some
 | 
						|
  extension modules that haven't been converted to define their own
 | 
						|
  exceptions yet.)
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{SyntaxError}
 | 
						|
% XXXJH xref to these functions?
 | 
						|
  Raised when the parser encounters a syntax error.  This may occur in
 | 
						|
  an \code{import} statement, in an \code{exec} statement, in a call
 | 
						|
  to the built-in function \code{eval()} or \code{input()}, or
 | 
						|
  when reading the initial script or standard input (also
 | 
						|
  interactively).
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{SystemError}
 | 
						|
  Raised when the interpreter finds an internal error, but the
 | 
						|
  situation does not look so serious to cause it to abandon all hope.
 | 
						|
  The associated value is a string indicating what went wrong (in
 | 
						|
  low-level terms).
 | 
						|
  
 | 
						|
  You should report this to the author or maintainer of your Python
 | 
						|
  interpreter.  Be sure to report the version string of the Python
 | 
						|
  interpreter (\code{sys.version}; it is also printed at the start of an
 | 
						|
  interactive Python session), the exact error message (the exception's
 | 
						|
  associated value) and if possible the source of the program that
 | 
						|
  triggered the error.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{SystemExit}
 | 
						|
% XXXJH xref to module sys?
 | 
						|
  This exception is raised by the \code{sys.exit()} function.  When it
 | 
						|
  is not handled, the Python interpreter exits; no stack traceback is
 | 
						|
  printed.  If the associated value is a plain integer, it specifies the
 | 
						|
  system exit status (passed to \C{}'s \code{exit()} function); if it is
 | 
						|
  \code{None}, the exit status is zero; if it has another type (such as
 | 
						|
  a string), the object's value is printed and the exit status is one.
 | 
						|
  
 | 
						|
  A call to \code{sys.exit} is translated into an exception so that
 | 
						|
  clean-up handlers (\code{finally} clauses of \code{try} statements)
 | 
						|
  can be executed, and so that a debugger can execute a script without
 | 
						|
  running the risk of losing control.  The \code{posix._exit()} function
 | 
						|
  can be used if it is absolutely positively necessary to exit
 | 
						|
  immediately (e.g., after a \code{fork()} in the child process).
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{TypeError}
 | 
						|
  Raised when a built-in operation or function is applied to an object
 | 
						|
  of inappropriate type.  The associated value is a string giving
 | 
						|
  details about the type mismatch.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{ValueError}
 | 
						|
  Raised when a built-in operation or function receives an argument
 | 
						|
  that has the right type but an inappropriate value, and the
 | 
						|
  situation is not described by a more precise exception such as
 | 
						|
  \code{IndexError}.
 | 
						|
\end{excdesc}
 | 
						|
 | 
						|
\begin{excdesc}{ZeroDivisionError}
 | 
						|
  Raised when the second argument of a division or modulo operation is
 | 
						|
  zero.  The associated value is a string indicating the type of the
 | 
						|
  operands and the operation.
 | 
						|
\end{excdesc}
 |