Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Python - Gestion des exceptions

Page PrécédentePage Suivante

Python fournit deux fonctionnalités très importantes pour gérer toute erreur inattendue dans vos programmes Python et pour y ajouter des capacités de débogage −

Liste des exceptions standard −

Exception

Classe de base pour toutes les exceptions

ArrêterItération

Déclenché lorsque la méthode next() d'un itérateur ne pointe sur aucun objet.

Sortie du système

Levé par la fonction sys.exit().

Erreur standard

Classe de base pour toutes les exceptions intégrées à l'exception de StopIteration et SystemExit.

Erreur arithmétique

Classe de base pour toutes les erreurs qui se produisent lors du calcul numérique.

Erreur de débordement

Déclenché lorsqu'un calcul dépasse la limite maximale pour un type numérique.

Erreur de point flottant

Déclenché lorsqu'un calcul en virgule flottante échoue.

Erreur de division zéro

Déclenché lorsqu'une division ou un modulo par zéro a lieu pour tous les types numériques.

Erreur d'assertion

Levé en cas d'échec de l'instruction Assert.

Erreur d'attribut

Levé en cas d'échec de référence ou d'affectation d'attribut.

EOFErreur

Déclenché lorsqu'il n'y a aucune entrée de la fonction raw_input() ou input() et que la fin du fichier est atteinte.

Erreur d'importation

Déclenché lorsqu'une instruction d'importation échoue.

Interruption du clavier

Déclenché lorsque l'utilisateur interrompt l'exécution du programme, généralement en appuyant sur Ctrl+c.

Erreur de recherche

Classe de base pour toutes les erreurs de recherche.

Erreur d'index

Déclenché lorsqu'un index n'est pas trouvé dans une séquence.

Erreur de clé

Déclenché lorsque la clé spécifiée est introuvable dans le dictionnaire.

Erreur de nom

Levé lorsqu'un identifiant est introuvable dans l'espace de noms local ou global.

UnboundLocalError

Levé lors d'une tentative d'accès à une variable locale dans une fonction ou une méthode mais qu'aucune valeur ne lui a été assignée.

Erreur d'environnement

Classe de base pour toutes les exceptions qui se produisent en dehors de l'environnement Python.

IOErreur

Levé lorsqu'une opération d'entrée/sortie échoue, comme l'instruction d'impression ou la fonction open() lors de la tentative d'ouverture d'un fichier qui n'existe pas.

IOErreur

Déclenché pour les erreurs liées au système d'exploitation.

Erreur de syntaxe

Levé lorsqu'il y a une erreur dans la syntaxe Python.

Erreur d'indentation

Déclenché lorsque l'indentation n'est pas correctement spécifiée.

Erreur système

Levé lorsque l'interpréteur trouve un problème interne, mais lorsque cette erreur est rencontrée, l'interpréteur Python ne se ferme pas.

Sortie du système

Déclenché lorsque l'interpréteur Python est quitté à l'aide de la fonction sys.exit(). S'il n'est pas géré dans le code, provoque la fermeture de l'interpréteur.

Erreur de type

Déclenché lorsqu'une opération ou une fonction est tentée qui n'est pas valide pour le type de données spécifié.

Erreur de valeur

Déclenché lorsque la fonction intégrée pour un type de données a le type d'arguments valide, mais que les arguments ont des valeurs non valides spécifiées.

Erreur d'exécution

Levé lorsqu'une erreur générée n'appartient à aucune catégorie.

Erreur non implémentée

Déclenché lorsqu'une méthode abstraite qui doit être implémentée dans une classe héritée n'est pas réellement implémentée.

Sr.No. Nom et description de l'exception
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

Assertions en Python

Une assertion est une vérification de cohérence que vous pouvez activer ou désactiver lorsque vous avez terminé de tester le programme.

La façon la plus simple de penser à une assertion est de la comparer à un raise-if instruction (ou pour être plus précis, une instruction raise-if-not). Une expression est testée et si le résultat est faux, une exception est levée.

Les assertions sont effectuées par l'instruction assert, le mot-clé le plus récent de Python, introduit dans la version 1.5.

Les programmeurs placent souvent des assertions au début d'une fonction pour vérifier la validité de l'entrée, et après un appel de fonction pour vérifier la validité de la sortie.

L'assertion Déclaration

Lorsqu'il rencontre une instruction assert, Python évalue l'expression qui l'accompagne, ce qui, espérons-le, est vrai. Si l'expression est fausse, Python lève une AssertionError exception.

La syntaxe pour assert est −

assert Expression[, Arguments]

Si l'assertion échoue, Python utilise ArgumentExpression comme argument pour AssertionError. Les exceptions AssertionError peuvent être interceptées et gérées comme n'importe quelle autre exception à l'aide de l'instruction try-except, mais si elles ne sont pas gérées, elles mettront fin au programme et produiront une trace.

Exemple

Voici une fonction qui convertit une température de degrés Kelvin en degrés Fahrenheit. Étant donné que zéro degré Kelvin est aussi froid que possible, la fonction s'arrête si elle voit une température négative −

Démo en direct
#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −

32.0
451
Traceback (most recent call last):
File "test.py", line 9, in <module>
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!

Qu'est-ce qu'une exception ?

Une exception est un événement qui se produit pendant l'exécution d'un programme et qui perturbe le flux normal des instructions du programme. En général, lorsqu'un script Python rencontre une situation qu'il ne peut pas gérer, il lève une exception. Une exception est un objet Python qui représente une erreur.

Lorsqu'un script Python déclenche une exception, il doit soit gérer l'exception immédiatement, soit il se termine et se ferme.

Gérer une exception

Si vous avez des informations suspectes code susceptible de déclencher une exception, vous pouvez défendre votre programme en plaçant le code suspect dans un try : bloquer. Après le try :block, incluez un except : instruction, suivie d'un bloc de code qui gère le problème aussi élégamment que possible.

Syntaxe

Voici une syntaxe simple de try....except...else blocs −

try:
   You do your operations here;
   ......................
except ExceptionI:
   If there is ExceptionI, then execute this block.
except ExceptionII:
   If there is ExceptionII, then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Voici quelques points importants sur la syntaxe mentionnée ci-dessus −

Exemple

Cet exemple ouvre un fichier, écrit du contenu dans le fichier et sort gracieusement car il n'y a aucun problème −

Démo en direct
#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()

Cela produit le résultat suivant −

Written content in the file successfully

Exemple

Cet exemple essaie d'ouvrir un fichier où vous n'avez pas l'autorisation d'écriture, donc il lève une exception −

Démo en direct
#!/usr/bin/python

try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

Cela produit le résultat suivant −

Error: can't find file or read data

Le sauf Clause sans exception

Vous pouvez également utiliser l'instruction except sans exception définie comme suit −

try:
   You do your operations here;
   ......................
except:
   If there is any exception, then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Ce genre d'essai sauf L'instruction intercepte toutes les exceptions qui se produisent. L'utilisation de ce type d'instruction try-except n'est cependant pas considérée comme une bonne pratique de programmation, car elle intercepte toutes les exceptions mais ne permet pas au programmeur d'identifier la cause première du problème qui peut survenir.

Le sauf Clause avec plusieurs exceptions

Vous pouvez également utiliser le même sauf déclaration pour gérer plusieurs exceptions comme suit −

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list, 
   then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

La clause try-finally

Vous pouvez utiliser un enfin : bloquer avec un essayer : bloquer. Le bloc finally est un endroit où placer tout code qui doit s'exécuter, que le bloc try ait déclenché une exception ou non. La syntaxe de l'instruction try-finally est la suivante -

try:
   You do your operations here;
   ......................
   Due to any exception, this may be skipped.
finally:
   This would always be executed.
   ......................

Vous ne pouvez pas utiliser else clause ainsi qu'une clause finally.

Exemple

Démo en direct
#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print "Error: can\'t find file or read data"

Si vous n'êtes pas autorisé à ouvrir le fichier en mode écriture, cela produira le résultat suivant −

Error: can't find file or read data

Le même exemple peut être écrit plus proprement comme suit −

Démo en direct
#!/usr/bin/python

try:
   fh = open("testfile", "w")
   try:
      fh.write("This is my test file for exception handling!!")
   finally:
      print "Going to close the file"
      fh.close()
except IOError:
   print "Error: can\'t find file or read data"

Lorsqu'une exception est levée dans le try bloc, l'exécution passe immédiatement au finalement bloquer. Après toutes les déclarations dans le enfin sont exécutés, l'exception est à nouveau levée et est gérée dans le except instructions si elles sont présentes dans la couche supérieure suivante de try-except déclaration.

Argument d'une exception

Une exception peut avoir un argument , qui est une valeur qui donne des informations supplémentaires sur le problème. Le contenu de l'argument varie par exception. Vous capturez l'argument d'une exception en fournissant une variable dans la clause except comme suit −

try:
   You do your operations here;
   ......................
except ExceptionType, Argument:
   You can print value of Argument here...

Si vous écrivez le code pour gérer une seule exception, vous pouvez faire en sorte qu'une variable suive le nom de l'exception dans l'instruction except. Si vous interceptez plusieurs exceptions, vous pouvez faire en sorte qu'une variable suive le tuple de l'exception.

Cette variable reçoit la valeur de l'exception contenant principalement la cause de l'exception. La variable peut recevoir une valeur unique ou plusieurs valeurs sous la forme d'un tuple. Ce tuple contient généralement la chaîne d'erreur, le numéro d'erreur et un emplacement d'erreur.

Exemple

Voici un exemple pour une seule exception −

Démo en direct
#!/usr/bin/python

# Define a function here.
def temp_convert(var):
   try:
      return int(var)
   except ValueError, Argument:
      print "The argument does not contain numbers\n", Argument

# Call above function here.
temp_convert("xyz");

Cela produit le résultat suivant −

The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'

Soulever une exception

Vous pouvez déclencher des exceptions de plusieurs manières en utilisant l'instruction raise. La syntaxe générale de la raise déclaration est la suivante.

Syntaxe

raise [Exception [, args [, traceback]]]

Ici, Exception est le type d'exception (par exemple, NameError) et argument est une valeur pour l'argument exception. L'argument est facultatif; s'il n'est pas fourni, l'argument de l'exception est Aucun.

L'argument final, traceback, est également facultatif (et rarement utilisé dans la pratique), et s'il est présent, il s'agit de l'objet traceback utilisé pour l'exception.

Exemple

Une exception peut être une chaîne, une classe ou un objet. La plupart des exceptions soulevées par le noyau Python sont des classes, avec un argument qui est une instance de la classe. Définir de nouvelles exceptions est assez simple et peut être fait comme suit −

def functionName( level ):
   if level < 1:
      raise "Invalid level!", level
      # The code below to this would not be executed
      # if we raise the exception

Remarque : Afin d'intercepter une exception, une clause "except" doit faire référence à la même exception lancée, soit un objet de classe, soit une chaîne simple. Par exemple, pour capturer l'exception ci-dessus, nous devons écrire la clause except comme suit −

try:
   Business Logic here...
except "Invalid level!":
   Exception handling here...
else:
   Rest of the code here...

Exceptions définies par l'utilisateur

Python vous permet également de créer vos propres exceptions en dérivant des classes à partir des exceptions intégrées standard.

Voici un exemple lié à RuntimeError . Ici, une classe est créée qui est sous-classée de RuntimeError . Ceci est utile lorsque vous devez afficher des informations plus spécifiques lorsqu'une exception est interceptée.

Dans le bloc try, l'exception définie par l'utilisateur est déclenchée et interceptée dans le bloc except. La variable e est utilisée pour créer une instance de la classe Networkerror .

class Networkerror(RuntimeError):
   def __init__(self, arg):
      self.args = arg

Ainsi, une fois que vous avez défini la classe ci-dessus, vous pouvez déclencher l'exception comme suit −

try:
   raise Networkerror("Bad hostname")
except Networkerror,e:
   print e.args

Python

  1. Types de données Python
  2. Opérateurs Python
  3. Instruction de passe Python
  4. Arguments de la fonction Python
  5. Dictionnaire Python
  6. Erreurs Python et exceptions intégrées
  7. Gestion des exceptions Python à l'aide de l'instruction try, except et finally
  8. Exceptions personnalisées Python
  9. Itérateurs Python