Les exceptions peuvent être des objets classe ou des objets chaînes de caractères. Bien que la plupart des exceptions aient été des objets chaînes dans les versions passées de Python, dans Python 1.5 et les versions plus récentes, toutes les exceptions standard ont été converties en objets classe, et les utilisateurs sont encouragés à faire de même. Les exceptions sont définies par le module exceptions. Il n'est jamais nécessaire d'importer explicitement ce module : les exceptions sont fournies dans l'espace de noms intégré.
Deux objets chaîne distincts avec la même valeur sont considérés comme des exceptions différentes. Ceci pour obliger les programmeurs à utiliser des noms d'exceptions plutôt que leur valeur chaîne quand ils spécifient les gestionnaires d'exceptions. La valeur chaîne de toutes les exceptions intégrées est leur nom, mais ceci n'est pas imposé pour les exceptions définies par l'utilisateur ou les exceptions définies par les modules de la bibliothèque.
Pour les exceptions classe, dans une instruction try
avec une clause except qui se réfère à une classe
particulière, cette clause gère aussi toutes les classes d'exceptions
dérivées de cette classe (mais pas les exceptions dont elle est
dérivée). Deux classes d'exceptions qui ne sont pas liées par héritage ne
sont jamais équivalentes, même si elles ont le même nom.
Les exceptions intégéres listées ci-dessous peuvent être générées par
l'interpréteur ou par les fonctions intégrées. Sauf indication contraire,
ils ont une ``valeur associée'' indiquant la cause détaillée de l'erreur.
Il peut s'agir d'une chaîne ou d'un tuple contenant plusieurs éléments
d'information (par exemple, un code d'erreur et une chaîne explicitant
ce code). La valeur associée est le second argument de l'instruction
raise. Pour les exceptions chaîne, la valeur
associée elle-même sera stockée dans la variable nommée en second argument
de la clause except (s'il y en a un). Pour les exceptions classe,
cette variable reçoit l'instance exception. Si la classe exception est
dérivée de la classe racine standard Exception, la valeur associée
est présente comme l'attribut args de l'instance exception, et
éventuellement dans d'autres attributs.
Le code de l'utilisateur peut déclencher des exceptions intégrées. Ceci peut
servir à tester un gestionnaire d'exceptions ou à signaler une
condition d'erreur ``tout comme'' dans le cas où l'interpréteur
déclenche la même exception; mais méfiez-vous du fait que rien n'empêche
le code de l'utilisateur de déclencher une erreur inappropriée.
Les exceptions suivantes ne servent que de classes de base pour d'autres
exceptions.
Quand une exception EnvironmentError est instanciée avec un
triplet, les deux premiers éléments sont disponibles comme ci-dessus,
tandis que le troisième est disponible dans l'attribut filename.
Cependant, pour assurer la compatibilité ascendante, l'attribut argscontient seulement un couple des deux premiers arguments du constructeur.
L'attribut filename vaut Les exceptions suivantes sont les exceptions qui sont effectivement déclenchées.
Cette classe est dérivée de EnvironmentError. Voir le développement
ci-dessus pour plus d'informations sur les attributs des instances
exceptions.
Quand les exceptions classe sont utilisées, les instances de cette classe
ont des attributs filename, lineno, offset et
text pour accéder plus facilement aux détails; pour les exceptions
chaîne, la valeur associée est généralement un tuple de la forme
Vous devriez signaler ceci à l'auteur ou au mainteneur de votre
interpréteur Python. Veillez à signaler la version de l'interpréteur
Python ( Les instances ont un attribut code qui prend pour valeur le
statut de sortie ou le message d'erreur proposé (la valeur par défaut
est Un appel à la fonction sys.exit() est traduit en une exception de
telle façon que les gestionnaires de nettoyage (les clauses finally des instructions try) puissent être exécutés, et de façon 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, après un fork()
dans le processus enfant).
Exception
StandardError
ArithmeticError
LookupError
EnvironmentError
None quand cette exception est
créée avec autre chose que 3 arguments. Les attributs errno et
strerror valent aussi None quand l'instance a été créée
avec autre chose que 2 ou 3 arguments. Dans ce dernier cas, args
reproduit les arguments du constructeur sous forme d'un tuple.
AssertionError
AttributeError
EOFError
FloatingPointError
IOError
ImportError
from ... import ne
parvient pas à trouver un nom qui doit être importé.
IndexError
KeyError
KeyboardInterrupt
MemoryError
NameError
NotImplementedError
OSError
os.error du module os. Voir
EnvironmentError ci-dessus une description des valeurs
associées possibles.
Nouveau en version 1.5.2OverflowError
RuntimeError
SyntaxError
(message, (filename, lineno, offset, text)). Pour les exceptions
classe, str() retourne seulement le message.
SystemError
sys.version; également affichée au début d'une session
interactive Python), 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.
SystemExit
None, le statut de sortie est zéro; s'il est d'un
autre type (tel qu'une chaîne de caractères), la valeur de l'objet est
affichée et le statut de sortie vaut un.
None). Par ailleurs, cette exception dérive directement
de Exception et pas de StandardError, puisque ce
n'est pas techniquement une erreur.
TypeError
UnboundLocalError
UnicodeError
ValueError
WindowsError
ZeroDivisionError