Maison  >  Article  >  développement back-end  >  Explication graphique détaillée des méthodes de gestion des exceptions Python

Explication graphique détaillée des méthodes de gestion des exceptions Python

高洛峰
高洛峰original
2017-03-23 14:42:531844parcourir

Python fournit deux fonctions très importantes pour gérer les exceptions et les erreurs qui se produisent lors de l'exécution des programmes Python. Vous pouvez utiliser cette fonctionnalité pour déboguer des programmes Python.

Nous pouvons ouvrir inactif -> F1 pour afficher le document. Il contient de nombreux types d'exceptions, comme le montre l'image :

Explication graphique détaillée des méthodes de gestion des exceptions Python

Qu'est-ce que c'est. une exception ?

Une exception est un événement qui se produit pendant l'exécution du programme et affecte l'exécution normale du programme.

Généralement, une exception se produit lorsque Python ne peut pas gérer le programme normalement.

Les exceptions sont des objets Python qui représentent une erreur.

Lorsqu'une exception se produit dans un script Python, nous devons l'attraper et la gérer, sinon le programme mettra fin à son exécution.

Gestion des exceptions

Pour intercepter les exceptions, les instructions try/sauf peuvent être utilisées.

L'instruction try/sauf est utilisée pour détecter les erreurs dans le bloc d'instruction try, afin que l'instruction except puisse capturer les informations d'exception et les gérer.

Si vous ne souhaitez pas terminer votre programme lorsqu'une exception se produit, interceptez-la simplement en essayant.

Syntaxe :

Ce qui suit est la syntaxe d'un simple try....sauf...else :

try:

        #运行别的代码

except

        #如果在try部份引发了'name'异常

except ,:

        #如果引发了'name'异常,获得附加的数据

else:

        #如果没有异常发生

Le principe de fonctionnement de try est qu'après avoir commencé un essai , Python marque le contexte du programme en cours afin que vous puissiez revenir ici lorsqu'une exception se produit. La clause try est exécutée en premier, et ce qui se passe ensuite dépend si une exception se produit pendant l'exécution.

Si une exception se produit lors de l'exécution de l'instruction après try, python reviendra en arrière pour essayer d'exécuter la première clause except correspondant à l'exception. Une fois l'exception traitée, le flux de contrôle passera par l'intégralité de l'instruction try. (sauf si c'est le cas. Une nouvelle exception est levée lors de la gestion de l'exception).

#Si une exception se produit dans l'instruction après try, mais qu'il n'y a pas de clause except correspondante, l'exception sera soumise au try supérieur, ou au niveau supérieur du programme (cela mettra fin au programme et imprimer le message d'erreur provincial).

#Si aucune exception ne se produit lorsque la clause try est exécutée, python exécutera l'instruction après l'instruction else (s'il y en a une autre), puis le flux de contrôle passera par l'intégralité de l'instruction try.

Exemple

Ce qui suit est un exemple simple, il ouvre un fichier, écrit le contenu dans le fichier et aucune exception ne se produit :

#!/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()

Le résultat de sortie du programme ci-dessus :

 Written content in the file successfully

Exemple

Voici un exemple simple, il ouvre un fichier et dans ce fichier Le contenu est écrit, mais le fichier n'a pas d'autorisation en écriture et une exception s'est produite :

#!/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"

Les résultats de sortie du programme ci-dessus :

Error: can't find file or read data

Utiliser sauf sans aucun type d'exception

Vous pouvez utiliser le type sauf sans exception, comme indiqué dans l'exemple suivant :

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.

L'instruction try-sauf de la manière ci-dessus capture toutes les exceptions qui se produisent. Mais ce n’est pas une bonne méthode, nous ne pouvons pas identifier des informations anormales spécifiques via ce programme. Parce qu'il détecte toutes les exceptions.

Utiliser except avec plusieurs types d'exception

Vous pouvez également utiliser la même instruction except pour gérer plusieurs messages d'exception, comme indiqué ci-dessous :

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.

déclaration essayez-finalement

essayez- L'instruction final exécutera le dernier code, qu'une exception se produise ou non.

try:

finally:

    #退出try时总会执行

raise

Remarque : Vous pouvez Utilisez l'instruction except ou l'instruction enfin, mais pas les deux en même temps. L'instruction else ne peut pas être utilisée avec l'instruction enfin

#!/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 le fichier ouvert ne dispose pas d'autorisations d'écriture, le résultat ressemblera à ceci : Comme suit :

Error: can't find fileorread data

#!/usr/bin/python

🎜>try:

   fh =open("testfile""w")

   try:

      fh.write("This is my test file for exception handling!!" )

   print "Error: can't find file or read data"

Lorsqu'une exception est levée dans le bloc try, le code du bloc final est exécuté immédiatement.

Une fois toutes les instructions du bloc final exécutées, l'exception est à nouveau déclenchée et le code du bloc except est exécuté.

Le contenu du paramètre est différent de l'exception.

Paramètres d'exception

Une exception peut avoir des paramètres, qui peuvent être utilisés comme paramètres d'informations d'exception de sortie.

Vous pouvez capturer les paramètres d'exception via l'instruction except, comme suit :

try:

   You do your operations here;

   ......................

except ExceptionType, Argument:

   You can print value of Argument here...

Les valeurs d'exception reçues par les variables sont généralement incluses dans l'instruction d'exception. Les variables sous forme de tuples peuvent recevoir une ou plusieurs valeurs.

le tuple contient généralement une mauvaise chaîne, un mauvais numéro, une mauvaise position.

Instances

Voici des exemples d'une seule exception :

#!/usr/bin/python

# Define a function here.

def temp_convert(var):

   try:

      return int(var)

   except ValueError, Argument:

      print "The argument does not contain numbersn", Argument

# Call above function here.

temp_convert("xyz");

Les résultats d'exécution de le programme ci-dessus sont les suivants :

The argument does not contain numbers

invalid literal for int() with base 10'xyz'

Déclencher une exception

Nous pouvons utiliser l'instruction raise pour déclencher l'exception nous-mêmes

Le format de la syntaxe raise est le suivant :

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

est le type d'exception (par exemple, NameError) et le paramètre est une valeur de paramètre d'exception. Ce paramètre est facultatif, s'il n'est pas fourni, le paramètre d'exception est "Aucun".

Le dernier argument est facultatif (rarement utilisé en pratique) et, s'il est présent, est l'objet d'exception de trace.

Instance

Une exception peut être une chaîne, une classe ou un objet. La plupart des exceptions fournies par le noyau Python sont des classes instanciées, qui sont les paramètres d'une instance d'une classe.

Définir une exception est très simple, comme suit :

deffunctionName( level ):

    iflevel <code>1:

      raise "Invalid level!", level

      # The code below to this would not be executed

      # if we raise the exception

Remarque : Afin d'intercepter les exceptions, l'instruction "sauf" doit utiliser la même exception pour lancer l'objet de classe ou la chaîne.

Par exemple, si nous captons l'exception ci-dessus, l'instruction "sauf" est la suivante :

try:

    Business Logic here...

except "Invalid level!":

   Exception handling here...

else:

   Rest of the code here...

Exception définie par l'utilisateur

En créant une nouvelle classe d'exceptions, les programmes peuvent nommer leurs propres exceptions. Les exceptions doivent généralement hériter de la classe Exception, directement ou indirectement.

Ce qui suit est un exemple lié à RuntimeError. Une classe est créée dans l'exemple. La classe de base est RuntimeError, qui est utilisée pour générer plus d'informations lorsqu'une exception est déclenchée.

Dans le bloc d'instruction try, l'instruction except block est exécutée après l'exception définie par l'utilisateur. 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

Après avoir 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn