No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
Este repositorio está archivado. Puede ver los archivos y clonarlo, pero no puede subir cambios o reportar incidencias ni pedir Pull Requests.

01-piles.rst 1.5 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. Pile d'appels
  2. =============
  3. Reprenons un exemple de code qui provoque une erreur, par exemple en essayant
  4. de diviser par zéro::
  5. def mauvaise_fonction():
  6. return 1 / 0
  7. def fonction_intermédiaire():
  8. mauvaise_fonction()
  9. def fonction_principale():
  10. fonction_intermédiaire()
  11. fonction_principale()
  12. Si on lance ce code, voilà ce qu'on obtient::
  13. Traceback (most recent call last):
  14. File "mauvaises_maths.py", line 13, in <module>
  15. fonction_principale()
  16. File "mauvaises_maths.py", line 10, in fonction_principale
  17. fonction_intermédiaire()
  18. File "mauvaises_maths.py", line 6, in fonction_intermédiaire
  19. mauvaise_fonction()
  20. File "mauvaises_maths.py", line 2, in mauvaise_fonction
  21. return 1 / 0
  22. ZeroDivisionError: division by zero
  23. Ceci s'appelle une *pile d'appels*. Elle permet de voir exactement par quelles fonction on est passé et
  24. dans quel ordre. Elle se lit de haut en bas:
  25. * On appelé `fonction_principale()`
  26. * Cette fonction a à son tour appelé `fonction_intermédiaire()`
  27. * `fonction_intermédiaire()` à appelé `mauvaise_fonction()`
  28. * `mauvaise_fonction()` a levé une exception
  29. Notez que chaque élément de la pile comprend:
  30. * le nom de la fonction
  31. * le chemin du module la contetant
  32. * le numéro et la ligne précise du code qui a été appelé
  33. Il est important de bien lire les piles d'appels quand on cherche
  34. à comprendre d'où vient une exception.
  35. Après la pile d'appels, on a le *nom* de l'exception et sa *description*.