6. Exceptions natives
*********************

Exceptions should be class objects.   The exceptions are defined in
the module "exceptions".  This module never needs to be imported
explicitly: the exceptions are provided in the built-in namespace as
well as the "exceptions" module.

For class exceptions, in a "try" statement with an "except" clause
that mentions a particular class, that clause also handles any
exception classes derived from that class (but not exception classes
from which *it* is derived).  Two exception classes that are not
related via subclassing are never equivalent, even if they have the
same name.

The built-in exceptions listed below 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).
The associated value is the second argument to the "raise" statement.
If the exception class is derived from the standard root class
"BaseException", the associated value is present as the exception
instance’s "args" attribute.

Du code utilisateur peut lever des exceptions natives. Cela peut être
utilisé pour tester un gestionnaire d’exception ou pour rapporter une
condition d’erreur « comme si » c’était l’interpréteur qui levait
cette exception ; mais attention car rien n’empêche du code
utilisateur de lever une erreur inappropriée.

Les classes d’exception natives peuvent être héritées pour définir de
nouvelles exceptions ; les programmeurs sont encouragés à faire
dériver les nouvelles exceptions de la classe "Exception" ou d’une de
ses sous-classes, et non de "BaseException". Plus d’informations sur
la définition des exceptions sont disponibles dans le Tutoriel Python
sous Exceptions définies par l’utilisateur.

The following exceptions are only used as base classes for other
exceptions.

exception BaseException

   The base class for all built-in exceptions.  It is not meant to be
   directly inherited by user-defined classes (for that, use
   "Exception").  If "str()" or "unicode()" is called on an instance
   of this class, the representation of the argument(s) to the
   instance are returned, or the empty string when there were no
   arguments.

   Nouveau dans la version 2.5.

   args

      The tuple of arguments given to the exception constructor.  Some
      built-in exceptions (like "IOError") expect a certain number of
      arguments and assign a special meaning to the elements of this
      tuple, while others are usually called only with a single string
      giving an error message.

exception Exception

   Toutes les exceptions natives, qui n’entraînent pas une sortie du
   système dérivent de cette classe. Toutes les exceptions définies
   par l’utilisateur devraient également être dérivées de cette
   classe.

   Modifié dans la version 2.5: Changed to inherit from
   "BaseException".

exception StandardError

   The base class for all built-in exceptions except "StopIteration",
   "GeneratorExit", "KeyboardInterrupt" and "SystemExit".
   "StandardError" itself is derived from "Exception".

exception ArithmeticError

   La classe de base pour les exceptions natives qui sont levées pour
   diverses erreurs arithmétiques : "OverflowError",
   "ZeroDivisionError", "FloatingPointError".

exception BufferError

   Levée lorsqu’une opération liée à un tampon ne peut pas être
   exécutée.

exception LookupError

   La classe de base pour les exceptions qui sont levées lorsqu’une
   clé ou un index utilisé sur un tableau de correspondances ou une
   séquence est invalide : "IndexError", "KeyError". Peut être levée
   directement par "codecs.lookup()".

exception EnvironmentError

   The base class for exceptions that can occur outside the Python
   system: "IOError", "OSError".  When exceptions of this type are
   created with a 2-tuple, the first item is available on the
   instance’s "errno" attribute (it is assumed to be an error number),
   and the second item is available on the "strerror" attribute (it is
   usually the associated error message).  The tuple itself is also
   available on the "args" attribute.

   Nouveau dans la version 1.5.2.

   When an "EnvironmentError" exception is instantiated with a
   3-tuple, the first two items are available as above, while the
   third item is available on the "filename" attribute.  However, for
   backwards compatibility, the "args" attribute contains only a
   2-tuple of the first two constructor arguments.

   The "filename" attribute is "None" when this exception is created
   with other than 3 arguments.  The "errno" and "strerror" attributes
   are also "None" when the instance was created with other than 2 or
   3 arguments. In this last case, "args" contains the verbatim
   constructor arguments as a tuple.

The following exceptions are the exceptions that are actually raised.

exception AssertionError

   Levée lorsqu’une instruction "assert" échoue.

exception AttributeError

   Levée lorsqu’une référence ou une assignation d’attribut (voir
   Références à des attributs) échoue. (Lorsqu’un objet ne supporte
   pas du tout la référence ou l’assignation d’attribut, "TypeError"
   est levé.)

exception EOFError

   Raised when one of the built-in functions ("input()" or
   "raw_input()") hits an end-of-file condition (EOF) without reading
   any data. (N.B.: the "file.read()" and "file.readline()" methods
   return an empty string when they hit EOF.)

exception FloatingPointError

   Levée lorsqu’une opération en virgule flottante échoue. Cette
   exception est toujours définie, mais ne peut être levée que lorsque
   Python est configuré avec l’option "--with-fpectl", ou que le
   symbole "WANT_SIGFPE_HANDLER" est défini dans le fichier
   "pyconfig.h".

exception GeneratorExit

   Raised when a *generator*’s "close()" method is called.  It
   directly inherits from "BaseException" instead of "StandardError"
   since it is technically not an error.

   Nouveau dans la version 2.5.

   Modifié dans la version 2.6: Changed to inherit from
   "BaseException".

exception IOError

   Raised when an I/O operation (such as a "print" statement, the
   built-in "open()" function or a method of a file object) fails for
   an I/O-related reason, e.g., « file not found » or « disk full ».

   This class is derived from "EnvironmentError".  See the discussion
   above for more information on exception instance attributes.

   Modifié dans la version 2.6: Changed "socket.error" to use this as
   a base class.

exception ImportError

   Raised when an "import" statement fails to find the module
   definition or when a "from ... import" fails to find a name that is
   to be imported.

exception IndexError

   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, "TypeError" is raised.)

exception KeyError

   Levée lorsqu’une clef (de dictionnaire) n’est pas trouvée dans
   l’ensemble des clefs existantes.

exception KeyboardInterrupt

   Raised when the user hits the interrupt key (normally "Control-C"
   or "Delete").  During execution, a check for interrupts is made
   regularly. Interrupts typed when a built-in function "input()" or
   "raw_input()" is waiting for input also raise this exception. The
   exception inherits from "BaseException" so as to not be
   accidentally caught by code that catches "Exception" and thus
   prevent the interpreter from exiting.

   Modifié dans la version 2.5: Changed to inherit from
   "BaseException".

exception MemoryError

   Levée lorsqu’une opération est à court de mémoire mais que la
   situation peut encore être rattrapée (en supprimant certains
   objets). La valeur associée est une chaîne de caractères indiquant
   quel type d’opération (interne) est à court de mémoire. À noter
   qu’en raison de l’architecture interne de gestion de la mémoire (la
   fonction "malloc()" du C), l’interpréteur peut ne pas toujours être
   capable de rattraper cette situation ; il lève néanmoins une
   exception pour qu’une pile d’appels puisse être affichée, dans le
   cas où un programme en cours d’exécution en était la cause.

exception NameError

   Levée lorsqu’un nom local ou global n’est pas trouvé. Ceci ne
   s’applique qu’aux noms non qualifiés. La valeur associée est un
   message d’erreur qui inclut le nom qui n’a pas pu être trouvé.

exception NotImplementedError

   This exception is derived from "RuntimeError".  In user defined
   base classes, abstract methods should raise this exception when
   they require derived classes to override the method.

   Nouveau dans la version 1.5.2.

exception OSError

   This exception is derived from "EnvironmentError".  It is raised
   when a function returns a system-related error (not for illegal
   argument types or other incidental errors).  The "errno" attribute
   is a numeric error code from "errno", and the "strerror" attribute
   is the corresponding string, as would be printed by the C function
   "perror()". See the module "errno", which contains names for the
   error codes defined by the underlying operating system.

   For exceptions that involve a file system path (such as "chdir()"
   or "unlink()"), the exception instance will contain a third
   attribute, "filename", which is the file name passed to the
   function.

   Nouveau dans la version 1.5.2.

exception OverflowError

   Raised when the result of an arithmetic operation is too large to
   be represented.  This cannot occur for long integers (which would
   rather raise "MemoryError" than give up) and for most operations
   with plain integers, which return a long integer instead.  Because
   of the lack of standardization of floating point exception handling
   in C, most floating point operations also aren’t checked.

exception ReferenceError

   Cette exception est levée lorsqu’un pointeur faible d’un objet
   proxy, créé par la fonction "weakref.proxy()", est utilisé pour
   accéder à un attribut du référent après qu’il ait été récupéré par
   le ramasse-miettes. Pour plus d’informations sur les pointeurs
   faibles, voir le module "weakref".

   Nouveau dans la version 2.2: Previously known as the
   "weakref.ReferenceError" exception.

exception RuntimeError

   Levée lorsqu’une erreur qui n’appartient à aucune des autres
   catégories est détectée. La valeur associée est une chaîne de
   caractères indiquant précisément ce qui s’est mal passé.

exception StopIteration

   Raised by an *iterator*’s "next()" method to signal that there are
   no further values.  This is derived from "Exception" rather than
   "StandardError", since this is not considered an error in its
   normal application.

   Nouveau dans la version 2.2.

exception SyntaxError

   Raised when the parser encounters a syntax error.  This may occur
   in an "import" statement, in an "exec" statement, in a call to the
   built-in function "eval()" or "input()", or when reading the
   initial script or standard input (also interactively).

   Les instances de cette classe ont des attributs "filename",
   "lineno", "offset" et "text" pour accéder plus facilement aux
   détails. La représentation "str()" de l’instance de l’exception
   retourne seulement le message.

exception IndentationError

   Classe de base pour les erreurs de syntaxe liées à une indentation
   incorrecte. C’est une sous-classe de "SyntaxError".

exception TabError

   Levée lorsqu’une indentation contient une utilisation incohérente
   des tabulations et des espaces. C’est une sous-classe de
   "IndentationError".

exception SystemError

   Levée lorsque l’interpréteur trouve une erreur interne, mais que la
   situation ne semble pas si grave au point de lui faire abandonner
   tout espoir. La valeur associée est une chaîne de caractères
   indiquant l’erreur qui est survenue (en termes bas niveau).

   Vous devriez le signaler à l’auteur ou au responsable de votre
   interpréteur Python. Assurez-vous de signaler la version de
   l’interpréteur ("sys.version" ; elle est également affichée au
   lancement d’une session interactive), le message d’erreur exact (la
   valeur associée à l’exception) et si possible le code source du
   programme qui a déclenché l’erreur.

exception SystemExit

   This exception is raised by the "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 "exit()" function); if it is
   "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.

   Instances have an attribute "code" which is set to the proposed
   exit status or error message (defaulting to "None"). Also, this
   exception derives directly from "BaseException" and not
   "StandardError", since it is not technically an error.

   Un appel à "sys.exit()" est traduit en une exception pour que les
   gestionnaires de nettoyage (les clauses "finally" des instructions
   "try") puissent être exécutés, et pour qu’un débogueur puisse
   exécuter un script sans courir le risque de perdre le contrôle. La
   fonction "os._exit()" peut être utilisée s’il est absolument
   nécessaire de sortir immédiatement (par exemple, dans le processus
   enfant après un appel à "os.fork()").

   The exception inherits from "BaseException" instead of
   "StandardError" or "Exception" so that it is not accidentally
   caught by code that catches "Exception".  This allows the exception
   to properly propagate up and cause the interpreter to exit.

   Modifié dans la version 2.5: Changed to inherit from
   "BaseException".

exception TypeError

   Levée lorsqu’une opération ou fonction est appliquée à un objet
   d’un type inapproprié. La valeur associée est une chaîne de
   caractères donnant des détails sur le type d’inadéquation.

exception UnboundLocalError

   Levée lorsqu’une référence est faite à une variable locale dans une
   fonction ou une méthode, mais qu’aucune valeur n’a été liée à cette
   variable. C’est une sous-classe de "NameError".

   Nouveau dans la version 2.0.

exception UnicodeError

   Levée lorsqu’une erreur d’encodage ou de décodage liée à Unicode se
   produit. C’est une sous-classe de "ValueError".

   "UnicodeError" a des attributs qui décrivent l’erreur d’encodage ou
   de décodage. Par exemple, "err.object[err.start:err.end]" donne
   l’entrée particulière invalide sur laquelle le codec a échoué.

   encoding

      Le nom de l’encodage qui a provoqué l’erreur.

   reason

      Une chaîne de caractères décrivant l’erreur de codec spécifique.

   object

      L’objet que le codec essayait d’encoder ou de décoder.

   start

      Le premier index des données invalides dans "object".

   end

      L’index après la dernière donnée invalide dans "object".

   Nouveau dans la version 2.0.

exception UnicodeEncodeError

   Levée lorsqu’une erreur liée à Unicode se produit durant
   l’encodage. C’est une sous-classe d”"UnicodeError".

   Nouveau dans la version 2.3.

exception UnicodeDecodeError

   Levée lorsqu’une erreur liée à Unicode se produit durant le
   décodage. C’est une sous-classe d”"UnicodeError".

   Nouveau dans la version 2.3.

exception UnicodeTranslateError

   Levée lorsqu’une erreur liée à Unicode se produit durant la
   traduction. C’est une sous-classe d”"UnicodeError".

   Nouveau dans la version 2.3.

exception ValueError

   Raised when an 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 "IndexError".

exception VMSError

   Only available on VMS.  Raised when a VMS-specific error occurs.

exception WindowsError

   Raised when a Windows-specific error occurs or when the error
   number does not correspond to an "errno" value.  The "winerror" and
   "strerror" values are created from the return values of the
   "GetLastError()" and "FormatMessage()" functions from the Windows
   Platform API. The "errno" value maps the "winerror" value to
   corresponding "errno.h" values. This is a subclass of "OSError".

   Nouveau dans la version 2.0.

   Modifié dans la version 2.5: Previous versions put the
   "GetLastError()" codes into "errno".

exception ZeroDivisionError

   Levée lorsque le second argument d’une opération de division ou
   d’un modulo est zéro. La valeur associée est une chaîne indiquant
   le type des opérandes et de l’opération.

Les exceptions suivantes sont utilisées comme catégories
d’avertissement ; voir le module "warnings" pour plus d’informations.

exception Warning

   Classe de base pour les catégories d’avertissement.

exception UserWarning

   Classe de base pour les avertissements générés par du code
   utilisateur.

exception DeprecationWarning

   Classe de base pour les avertissements sur les fonctionnalités
   obsolètes.

exception PendingDeprecationWarning

   Classe de base pour les avertissements sur les fonctionnalités qui
   seront obsolètes dans le futur.

exception SyntaxWarning

   Classe de base pour les avertissements sur de la syntaxe douteuse.

exception RuntimeWarning

   Classe de base pour les avertissements sur les comportements
   d’exécution douteux.

exception FutureWarning

   Classe de base pour les avertissements sur les constructions qui
   changeront sémantiquement dans le futur.

exception ImportWarning

   Classe de base pour les avertissements sur des erreurs probables
   dans les imports de modules.

   Nouveau dans la version 2.5.

exception UnicodeWarning

   Classe de base pour les avertissements liés à l’Unicode.

   Nouveau dans la version 2.5.


6.1. Hiérarchie des exceptions
==============================

La hiérarchie de classes pour les exceptions natives est la suivante :

   BaseException
    +-- SystemExit
    +-- KeyboardInterrupt
    +-- GeneratorExit
    +-- Exception
         +-- StopIteration
         +-- StandardError
         |    +-- BufferError
         |    +-- ArithmeticError
         |    |    +-- FloatingPointError
         |    |    +-- OverflowError
         |    |    +-- ZeroDivisionError
         |    +-- AssertionError
         |    +-- AttributeError
         |    +-- EnvironmentError
         |    |    +-- IOError
         |    |    +-- OSError
         |    |         +-- WindowsError (Windows)
         |    |         +-- VMSError (VMS)
         |    +-- EOFError
         |    +-- ImportError
         |    +-- LookupError
         |    |    +-- IndexError
         |    |    +-- KeyError
         |    +-- MemoryError
         |    +-- NameError
         |    |    +-- UnboundLocalError
         |    +-- ReferenceError
         |    +-- RuntimeError
         |    |    +-- NotImplementedError
         |    +-- SyntaxError
         |    |    +-- IndentationError
         |    |         +-- TabError
         |    +-- SystemError
         |    +-- TypeError
         |    +-- ValueError
         |         +-- UnicodeError
         |              +-- UnicodeDecodeError
         |              +-- UnicodeEncodeError
         |              +-- UnicodeTranslateError
         +-- Warning
              +-- DeprecationWarning
              +-- PendingDeprecationWarning
              +-- RuntimeWarning
              +-- SyntaxWarning
              +-- UserWarning
              +-- FutureWarning
   	   +-- ImportWarning
   	   +-- UnicodeWarning
   	   +-- BytesWarning
