You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

python-10.md 2.0 KiB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. % Programmation avec Python (chapitre 10)
  2. % Dimitri Merejkowsky
  3. \center \huge Rappels
  4. * string formatting (%, .format(), f"")
  5. * abstract base classes
  6. \center \huge Exceptions
  7. * Examples:
  8. * division par zéro
  9. * dépassement d'un tableau
  10. * clé non trouvée dans un dico
  11. * opération entre types incompatibles
  12. * le fichier n'existe pas
  13. * la variable n'existe pas
  14. * les backtraces
  15. * comment les lire
  16. * y a un sens!
  17. ```python
  18. def une_fonction():
  19. return 1 / 0
  20. def une_autre_fonction():
  21. une_fonction()
  22. une_autre_fonction()
  23. ```
  24. ```python
  25. def une_fonction(diviseur):
  26. return 1 / diviseur
  27. def une_autre_fonction():
  28. une_fonction(diviseur=0)
  29. une_autre_fonction()
  30. ```
  31. # Lever une exception
  32. ```python
  33. def retirer_somme(compte, montant):
  34. solde = ...
  35. if montant >= solde:
  36. raise ValueError("montant supérieur au solde!")
  37. ```
  38. # Attraper une exception
  39. * Quand c'est pas le bon type, ben ça throw quand même
  40. * On peut mettre plusieurs blocs de `catch`
  41. * On peut attraper plusieurs exceptions d'un coup
  42. Attention aux bare except
  43. # Hiérarchies
  44. À connaître
  45. À utiliser si vous faites une librairie.
  46. # finally, else
  47. # WBYL et EAFP
  48. Watch Before You Leap
  49. Easier to Ask for Forgiveness than Permission
  50. fichiers encore:
  51. ```python
  52. if exists():
  53. if pas_un_dossier():
  54. if j_ai_les_droits_en_lecture():
  55. open(filename):
  56. ```
  57. ```python
  58. try:
  59. open(filename):
  60. catch IOError:
  61. ...
  62. ```
  63. # avec with
  64. # attention a ou vous mettez except
  65. ```python
  66. if truc:
  67. if machin:
  68. for bidule in chose:
  69. raise MyError("kaboom!")
  70. ````
  71. ```python
  72. if truc:
  73. if machin:
  74. try:
  75. for bidule in chose:
  76. raise MyError("kaboom!")
  77. except:
  78. ...
  79. ```
  80. ```python
  81. if truc:
  82. try:
  83. if machin:
  84. for bidule in chose:
  85. raise MyError("kaboom!")
  86. except:
  87. ...
  88. ````
  89. # Accédér aux détails de l'exceptions
  90. * Avec `as`
  91. * Attrribut `args`
  92. * Parfois d'autres atttributs (voir la doc)