Maison >développement back-end >Tutoriel Python >Analyse d'exemples de gestion d'exceptions en Python
En python, les exceptions déclenchées par des erreurs sont les suivantes
Différentes exceptions en python peuvent être identifiées par différents types, une identification d'exception Une erreur.
AttributeError Essayer d'accéder à une arborescence qui n'a pas d'objet, comme foo.x, mais foo n'a pas d'attribut
ImportError Impossible d'importer un module ou un package essentiellement un problème de chemin ou une erreur ; name# TypeError:int类型不可迭代 for i in 3: pass # ValueError num=input(">>: ") #输入hello int(num) # NameError aaa # IndexError l=['egon','aa'] l[3] # KeyError dic={'name':'egon'} dic['age'] # AttributeError class Foo:pass Foo.x # ZeroDivisionError:无法完成计算 res1=1/0 res2=1+'str'3. Gestion des exceptions
try: 被检测的代码块 except 异常类型: try中一旦检测到异常,就执行这个位置的逻辑Exemple
try: f = [ 'a', 'a', 'a','a','a', 'a','a',] g = (line.strip() for line in f) #元组推导式 print(next(g)) print(next(g)) print(next(g)) print(next(g)) print(next(g)) except StopIteration: f.close()
s1 = 'hello' try: int(s1) except IndexError as e: # 未捕获到异常,程序直接报错 print(e)2. Exception multi-branches sauf..sauf et exception universelle : Exception
s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) except Exception as e: print(e)
for arg in sys.argv[1:]: try: f = open(arg, 'r') except IOError: print('cannot open', arg) else: print(arg, 'has', len(f.readlines()), 'lines') f.close()4. L'exécution finale des exceptions. L'instruction enfin
s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) #except Exception as e: # print(e) else: print('try内代码块没有异常则执行我') finally: print('无论异常与否,都会执行该模块,通常是进行清理工作')
Python utilise l'instruction raise pour lever une exception spécifiée. Le format de syntaxe de raise est le suivant :
raise [Exception [, args [, traceback]]]
try: raise TypeError('抛出异常,类型错误') except Exception as e: print(e)
try: raise NameError('HiThere') except NameError: print('An exception flew by!') raise #An exception flew by! #Traceback (most recent call last): # File "", line 2, in ? #NameError: HiThere5. Exceptions personnalisées Vous pouvez avoir vos propres exceptions en créant une nouvelle classe d'exceptions. La classe d'exception hérite de la classe Exception, directement ou indirectement, par exemple : Dans cet exemple, la valeur par défaut __init__() de la classe Exception est remplacée.
class EgonException(Exception): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg try: raise EgonException('抛出异常,类型错误') except EgonException as e: print(e) #抛出异常,类型错误Classe d'exception de baseLors de la création d'un module pouvant générer de nombreuses exceptions différentes, une approche courante consiste à créer une classe d'exception de base pour ce package, puis à créer différentes exceptions pour différentes situations d'erreur basées sur cette classe de base de. :La plupart des noms d'exceptions se terminent par "Erreur", tout comme les noms d'exceptions standard.
class Error(Exception): """Base class for exceptions in this module.""" pass class InputError(Error): """Exception raised for errors in the input. Attributes: expression -- input expression in which the error occurred message -- explanation of the error """ def __init__(self, expression, message): self.expression = expression self.message = message class TransitionError(Error): """Raised when an operation attempts a state transition that's not allowed. Attributes: previous -- state at beginning of transition next -- attempted new state message -- explanation of why the specific transition is not allowed """ def __init__(self, previous, next, message): self.previous = previous self.next = next self.message = message
assert expressionest équivalent à :
if not expression: raise AssertionError
assert expression [, arguments]est équivalent à :
if not expression: raise AssertionError(arguments)L'exemple suivant détermine si le système actuel est Linux. Si les conditions ne sont pas remplies, il sera déclenché directement. Exception, pas besoin d'exécuter le code suivant :
import sys assert ('linux' in sys.platform), "该代码只能在 Linux 下执行" # 接下来要执行的代码 # Traceback (most recent call last): # File "C:/PycharmProjects/untitled/run.py", line 2, in # assert ('linux' in sys.platform), "该代码只能在 Linux 下执行" # AssertionError: 该代码只能在 Linux 下执行.
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!