Programmation Python/Exceptions
Principe.
Une exception est un signal d'erreur associé à un type de données donnant des informations sur l'erreur.
En Python, il s'agit d'un objet.
La capture des "exceptions" permet l'exécution d'instructions par un interpréteur ou par le processeur (langage compilé) lorsqu'une erreur est détectée au cours de l'exécution d'un programme.
En règle générale, lorsque l'erreur n'est pas capturée, l'exécution du programme est alors interrompue, et un message d'erreur plus ou moins explicite est affiché.
Exemple en Python 2 :
»> print 55/0
ZeroDivisionError: integer division or modulo
Exemple en Python 3 :
»> print(55/0)
ZeroDivisionError: division by zero
Le message d'erreur proprement dit comporte deux parties séparées par un double point : d'abord le type d'erreur, et ensuite une information spécifique de cette erreur.
Dans de nombreux cas, il est possible de prévoir à l'avance certaines des erreurs qui risquent de se produire à tel ou tel endroit du programme, et d'inclure à cet endroit des instructions particulières, qui seront activées seulement si ces erreurs se produisent. Dans les langages de niveau élevé comme Python, il est également possible d'associer un mécanisme de surveillance à tout "un ensemble d'instructions", et donc de simplifier le traitement des erreurs qui peuvent se produire dans n'importe laquelle de ces instructions.
Syntaxe.
Un mécanisme de ce type s'appelle en général "mécanisme de traitement des exceptions". Celui de Python utilise l'ensemble d'instructions codice_1, qui permettent d'intercepter une erreur et d'exécuter une portion de script spécifique de cette erreur. Il fonctionne comme suit :
Le bloc d'instructions qui suit directement une instruction codice_2 est exécuté par Python "sous réserve". Si une erreur survient pendant l'exécution de l'une de ces instructions, alors Python annule cette instruction fautive et exécute à sa place le code inclus dans le bloc qui suit l'instruction codice_3. Si aucune erreur ne s'est produite dans les instructions qui suivent codice_2, alors c'est le bloc qui suit l'instruction codice_5 qui est exécuté (si cette instruction est présente). Dans tous les cas, l'exécution du programme peut se poursuivre ensuite avec les instructions ultérieures.
Considérons par exemple un script qui demande à l'utilisateur d'entrer un nom de fichier, lequel fichier étant destiné à être ouvert en lecture. Si le fichier n'existe pas, nous ne voulons pas que le programme se « plante ». Nous voulons qu'un avertissement soit affiché, et éventuellement que l'utilisateur puisse essayer d'entrer un autre nom.
Exemple.
Exemple de gestion d'exception : intercepter une division par zéro.
a = int(input("Veuillez saisir le numérateur : "))
b = int(input("Veuillez saisir le dénominateur : "))
try:
 c = a / b
 print(" Le résultat est :" + c)
except ZeroDivisionError as e:
 print(e.status_code)
 print(str(e))
 print(" Pas de division par zéro SVP")
finally:
 print("Fin du script")
Autre exemple avec un fichier :
filename = raw_input("Veuillez entrer un nom de fichier : ")
try:
 f = open(filename, "r")
except:
 print "Le fichier", filename, "est introuvable"
Si nous estimons que ce genre de test est susceptible de rendre service à plusieurs endroits d'un programme, nous pouvons aussi l'inclure dans une fonction :
def existe(fname):
 try:
 f = open(fname,'r')
 f.close()
 return 1
 except:
 return 0
filename = raw_input("Veuillez entrer le nom du fichier : ")
if existe(filename):
 print "Ce fichier existe bel et bien."
else:
 print "Le fichier", filename, "est introuvable."
Il est également possible de faire suivre l'instruction "try" de plusieurs blocs "except", chacun d'entre eux traitant un type d'erreur spécifique.
Pour attraper plusieurs exceptions :
try:
 from lib import *
except (ImportError, ModuleNotFoundError) as e:
 from src.lib import *
Lancer une exception.
Un programme Python peut lancer une exception lorsqu'il détecte une erreur, en utilisant l'instruction codice_6 :
def construire_table(taille):
 if (taille < 1):
 raise Exception("La taille spécifiée est invalide.")
 # On peut continuer car taille est supérieur ou égal à 1 ...
Testé dans l'interpréteur interactif de Python :
»> construire_table(1)
»> construire_table(2)
»> construire_table(0)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 3, in construire_table
Exception: La taille spécifiée est invalide.
Créer une exception.
Il est possible de définir un nouveau type d'exception pour un type d'erreur spécifique.
Pour cela, il faut créer une nouvelle classe dérivant de la classe codice_7 ou d'une de ses sous-classes (codice_8 par exemple).
class InvalidSizeException(Exception):
 def __init__(self, taille):
 Exception.__init__(self, f"Taille invalide : {taille}")
def construire_table(taille):
 if (taille < 1):
 raise InvalidSizeException(taille)
 # On peut continuer car taille est supérieur ou égal à 1 ...
Testé dans l'interpréteur interactif de Python :
»> construire_table(2)
»> construire_table(1)
»> construire_table(0)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 3, in construire_table
__main__.InvalidSizeException: Taille invalide : 0
»> construire_table(-1)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 3, in construire_table
__main__.InvalidSizeException: Taille invalide : -1

Programmation Python/Fonctions originales

Programmation Python/Fonction
Programmation Python/Les fichiers
Programmation Python/Les exceptions
Programmation Python/Communications à travers un réseau

Programmation Python/Le réseau
Programmation Python/Module
Programmation Python/Fonctions prédéfinies

Précis d'épistémologie/Version imprimable

Français/Conjugaison/Comment conjuguer au conditionnel

Pour conjuguer les verbes au conditionnel il faut tout simplement déjà connaitre les verbes de l'indicatif et savoir la notion du mot "condition" (conditionnel vient du mot "condition").
Les verbes du conditionnel au présent se conjuguent tous avec les terminaisons suivantes : -rais, -rais, -rait, -rons, -rez, -raient.
Voilà c'est très simple et surtout n'oubliez pas avant de conjuguer les verbes de toujours se les répéter dans sa tête et vous verrez si c'est une indication ou une condition.

Goélette Cardabela/Annexes
<br><br><br><br><br>

Fonctionnement d'un ordinateur/Les architectures dataflow