Gestion des exceptions Python
Cet article répertorie plus en détail la gestion des exceptions courantes en Python pour votre référence, comme suit :
1. Lancement d'exceptions et d'exceptions personnalisées
Python utilise des objets d'exception pour représenter des situations anormales. . Si l'objet d'exception n'est pas géré ou intercepté, le programme terminera l'exécution avec ce qu'on appelle un traceback (un message d'erreur).
①.raise instruction
Le mot-clé raise en Python est utilisé pour déclencher une exception, qui est fondamentalement le même que le mot-clé throw en C# et Java, comme indiqué ci-dessous :
# -- coding: utf-8 -- def ThorwErr(): raise Exception("抛出一个异常") # Exception: 抛出一个异常 ThorwErr()
Le mot-clé raise est suivi de Throwing est un type d'exception général (Exception). De manière générale, plus l'exception levée est détaillée, mieux c'est. Python a de nombreux types d'exceptions intégrés dans le module d'exceptions. exceptions, comme suit :
import exceptions # ['ArithmeticError', 'AssertionError'.....] print dir(exceptions)
Passing exceptions
Si vous interceptez l'exception, mais que vous souhaitez la relancer (passer l'exception), vous pouvez utiliser l'instruction raise sans paramètres :
# -- coding: utf-8 -- class MuffledCalculator: muffled = False def calc(self,expr): try: return eval(expr) except ZeroDivisionError: if self.muffled: print 'Division by zero is illegal' else: raise
②. Type d'exception personnalisé
Vous pouvez également personnaliser votre propre type spécial d'exception en Python, en héritant simplement de la classe Exception (directement ou indirectement) :
class SomeCustomException(Exception): pass
2. et en C# Semblable à try/catch, le mot-clé try/sauf est utilisé en Python pour intercepter les exceptions, comme suit :
# -- coding: utf-8 -- try: print 2/0 except ZeroDivisionError: print '除数不能为0'
Dans une instruction except, seul le type d'exception déclaré. est capturée par la suite, si possible. Si d'autres types d'exceptions sont levées, vous devez ajouter une instruction except, ou vous pouvez spécifier un type d'exception plus général tel que : Exception, comme suit :
# -- coding: utf-8 -- try: print 2/'0' except ZeroDivisionError: print '除数不能为0' except Exception: print '其他类型异常'
Afin d'attraper plusieurs exceptions, en plus de déclarer plusieurs En plus de l'instruction except, vous pouvez également répertorier plusieurs exceptions sous forme de tuples après une instruction except :
# -- coding: utf-8 -- try: print 2/'0' except (ZeroDivisionError,Exception): print '发生了一个异常'
Chaque exception aura des informations sur les exceptions. De manière générale, nous devrions ensuite enregistrer ces informations d'exception :
# -- coding: utf-8 -- try: print 2/'0' except (ZeroDivisionError,Exception) as e: # unsupported operand type(s) for /: 'int' and 'str' print e
La clause final est utilisée conjointement avec la clause try, mais contrairement à l'instruction except, l'existence de la clause enfin n'a pas d'importance. une exception à l'intérieur de la clause try , le code de la clausefinal sera exécuté. En général, enfin lui-même est souvent utilisé pour fermer des fichiers ou dans des Sockets.
# -- coding: utf-8 -- try: print 2/'0' except (ZeroDivisionError,Exception): print '发生了一个异常' finally: print '不管是否发生异常都执行'