Mis a jour le 2019-10-20, 13:54

Exceptions

Syntaxe des exceptions :
while 1:
    try:
        x = int(raw_input('number:'))
        break
    except ValueError:
        print('try again')
  
Une clause except peut avoir plusieurs exceptions :
Les exceptions sont des classes :
On peut exécuter du code si aucune exception levée :
try:
    ...
except TypeError:
    ...
else:
    print('Aucune exception n'a eu lieu')
  
Certaines exceptions ont des arguments que l'on peut alors récupérer :
except NameError as e: # un argument, e, contenant les arguments de l'exception.
    print(arg:', e)
  
Les exceptions non traitées remontent d'appel en appel.
Pour catcher toutes les exceptions en récupérant leur message :
try:
    ...
except Exception as e:
   print(str(e))
   ...
  
Levée d'exception explicite :
finally : code toujours executé, qu'il y ait eu levée d'exception ou non :
try:
    1 / 0
except TypeError:
    print('type error')
finally: # toujours exécuté, avant de lever l'exception
    print('always done')
  
Traceback : permet de voir la pile des appels lors d'une erreur :
Pour avoir la pile des appels :
Pour avoir la liste des numéros de lignes après une exception :
info = sys.exc_info()[2]
while True:
  print(str(info.tb_lineno)+ ' at ' + info.tb_frame.f_code.co_filename)
  info = info.tb_next
  if info is None:
    break
  
Assertions en python :

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert