Utilisation de la gestion des exceptions : Afin de garantir la robustesse et la tolérance aux pannes du programme, c'est-à-dire que le programme ne plantera pas lorsqu'une erreur est rencontrée, nous devons gérer les exceptions,
1. Si les conditions dans lesquelles l'erreur se produit sont prévisibles, nous devons utiliser if pour la gérer et l'empêcher avant que l'erreur ne se produise. Si les conditions dans lesquelles l'erreur se produit sont imprévisibles , vous devez utiliser try..sauf: handle après l'erreur
#La syntaxe de base est
try:
Bloc de code détecté
sauf type d'exception :
Une fois qu'une exception est détectée dans try, la logique à cet emplacement sera exécutée
AGE=10 while True: age=input('>>: ').strip() if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的 age=int(age) if age == AGE: print('you got it') break
Utilisation détaillée de try.. .sauf...
Nous mettons les instructions susceptibles de provoquer des erreurs dans le module try et utilisons except pour gérer les exceptions. except peut gérer une exception spécifique ou un ensemble d'exceptions entre parenthèses. Si aucune exception n'est spécifiée après except, toutes les exceptions seront gérées par défaut. Chaque essai doit avoir au moins un except
1. Les classes d'exception ne peuvent gérer que les exceptions spécifiées. Si les exceptions non spécifiées ne peuvent pas être gérées,
#举例 try: f=open('a.txt') 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()
2, multi-branche
s1 = 'hello' try: int(s1) except IndexError as e: # 未捕获到异常,程序直接报错 print e
s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e)
s1 = 'hello' try: int(s1) except Exception as e: print(e)
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)
try: <语句> finally: <语句> #退出try时总会执行 raise
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('无论异常与否,都会执行该模块,通常是进行清理工作')
raise [Exception [, args [, traceback]]]
def functionName( level ): if level < 1: raise Exception("Invalid level!", level) # 触发异常后,后面的代码就不会再执行
try: raise TypeError('类型错误') except Exception as e: print(e)
class Networkerror(BaseException): def __init__(self,msg): self.msg=msg def __str__(self): return self.msg try: raise Networkerror('类型错误') except Networkerror as e: print(e)
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!