Added descriptions of EnvironmentError and OSError; updated IOError to

reflect its new place in the exception hierarchy; fixed typos, etc.
This commit is contained in:
Barry Warsaw 1998-07-23 19:57:35 +00:00
parent eef2cd14c9
commit da00c878bd
1 changed files with 51 additions and 18 deletions

View File

@ -7,14 +7,17 @@
Exceptions can be class objects or string objects. While
traditionally, most exceptions have been string objects, in Python
1.5, all standard exceptions have been converted to class objects,
and users are encouraged to the the same. The source code for those
and users are encouraged to do the same. The source code for those
exceptions is present in the standard library module
\module{exceptions}; this module never needs to be imported explicitly.
For backward compatibility, when Python is invoked with the \code{-X}
option, the standard exceptions are strings. This may be needed to
run some code that breaks because of the different semantics of class
based exceptions. The \code{-X} option will become obsolete in future
option, most of the standard exceptions are strings\footnote{For
forward-compatibility the new exceptions \code{LookupError},
\code{ArithmeticError}, \code{EnvironmentError}, and
\code{StandardError} are tuples.}. This option may be used to
run code that breaks because of the different semantics of class based
exceptions. The \code{-X} option will become obsolete in future
Python versions, so the recommended solution is to fix the code.
Two distinct string objects with the same value are considered different
@ -41,11 +44,11 @@ information (e.g., an error code and a string explaining the code).
The associated value is the second argument to the \keyword{raise}
statement. For string exceptions, the associated value itself will be
stored in the variable named as the second argument of the
\keyword{except} clause (if any). For class exceptions derived from
the root class \exception{Exception}, that variable receives the exception
instance, and the associated value is present as the exception
instance's \member{args} attribute; this is a tuple even if the second
argument to \keyword{raise} was not (then it is a singleton tuple).
\keyword{except} clause (if any). For class exceptions, that variable
receives the exception instance. If the exception class is derived
from the standard root class \exception{Exception}, the associated
value is present as the exception instance's \member{args} attribute,
and possibly on other attributes as well.
\stindex{raise}
User code can raise built-in exceptions. This can be used to test an
@ -68,7 +71,8 @@ function, when applied to an instance of this class (or most derived
classes) returns the string value of the argument or arguments, or an
empty string if no arguments were given to the constructor. When used
as a sequence, this accesses the arguments given to the constructor
(handy for backward compatibility with old code).
(handy for backward compatibility with old code). The arguments are
also available on the instance's \code{args} attribute, as a tuple.
\end{excdesc}
\begin{excdesc}{StandardError}
@ -84,11 +88,34 @@ various arithmetic errors: \exception{OverflowError},
\end{excdesc}
\begin{excdesc}{LookupError}
The base class for thise exceptions that are raised when a key or
The base class for the exceptions that are raised when a key or
index used on a mapping or sequence is invalid: \exception{IndexError},
\exception{KeyError}.
\end{excdesc}
\begin{excdesc}{EnvironmentError}
The base class for exceptions that
can occur outside the Python system: \exception{IOError},
\exception{OSError}. When exceptions of this type are created with a
2-tuple, the first item is available on the instance's \member{errno}
attribute (it is assumed to be an error number), and the second item
is available on the \member{strerror} attribute (it is usually the
associated error message). The tuple itself is also available on the
\member{args} attribute.
When an \exception{EnvironmentError} exception is instantiated with a
3-tuple, the first two items are available as above, while the third
item is available on the \member{filename} attribute. However, for
backwards compatibility, the \member{args} attribute contains only a
2-tuple of the first two constructor arguments.
The \member{filename} attribute is \code{None} when this exception is
created with other than 3 arguments. The \member{errno} and
\member{strerror} attributes are also \code{None} when the instance was
created with other than 2 or 3 arguments. In this last case,
\member{args} contains the verbatim constructor arguments as a tuple.
\end{excdesc}
\setindexsubitem{(built-in exception)}
The following exceptions are the exceptions that are actually raised.
@ -114,7 +141,7 @@ Raised when an \keyword{assert} statement fails.
reading any data.
% XXXJH xrefs here
(N.B.: the \method{read()} and \method{readline()} methods of file
objects return an empty string when they hit \EOF{}.) No associated value.
objects return an empty string when they hit \EOF{}.)
\end{excdesc}
\begin{excdesc}{FloatingPointError}
@ -126,15 +153,13 @@ symbol is defined in the \file{config.h} file.
\begin{excdesc}{IOError}
% XXXJH xrefs here
<<<<<<< libexcs.tex
Raised when an I/O operation (such as a \keyword{print} statement, the
built-in \function{open()} function or a method of a file object) fails
for an I/O-related reason, e.g., ``file not found'' or ``disk full''.
When class exceptions are used, and this exception is instantiated as
\code{IOError(errno, strerror)}, the instance has two additional
attributes \member{errno} and \member{strerror} set to the error code and
the error message, respectively. These attributes default to
\code{None}.
This class is derived \exception{EnvironmentError}. See the discussion
above for more information on exception instance attributes.
\end{excdesc}
\begin{excdesc}{ImportError}
@ -164,7 +189,7 @@ the error message, respectively. These attributes default to
% XXXJH xrefs here
Interrupts typed when a built-in function \function{input()} or
\function{raw_input()}) is waiting for input also raise this
exception. This exception has no associated value.
exception.
\end{excdesc}
\begin{excdesc}{MemoryError}
@ -184,6 +209,14 @@ the error message, respectively. These attributes default to
not be found.
\end{excdesc}
\begin{excdesc}{OSError}
%xref for os module
This class is derived from \begin{EnvironmentError} and is used
primarily as the by the \code{os} module's \code{os.error}
exception. See the \begin{EnvironmentError} above for a description
of the possible associated values.
\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