{"id":5753,"date":"2024-08-29T04:48:08","date_gmt":"2024-08-29T04:48:08","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/gerer-erreurs-et-exceptions-en-python\/"},"modified":"2024-08-29T04:48:12","modified_gmt":"2024-08-29T04:48:12","slug":"gerer-erreurs-et-exceptions-en-python","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/gerer-erreurs-et-exceptions-en-python\/","title":{"rendered":"2.16 G\u00e9rer Erreurs et Exceptions en Python"},"content":{"rendered":"\n<p><strong>G\u00e9rer Erreurs et Exceptions en Python<\/strong> est essentiel pour \u00e9crire du code robuste et fiable. Les exceptions permettent de traiter les erreurs qui se produisent pendant l&rsquo;ex\u00e9cution du programme et de prendre les mesures n\u00e9cessaires pour les g\u00e9rer. Apprenons comment utiliser les exceptions en Python \u00e0 travers des exemples concrets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 la Gestion des Exceptions en Python<\/h2>\n\n\n\n<div id=\"videoContainer\" style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;\">\n  <iframe src=\"https:\/\/player.vimeo.com\/video\/583311045?dnt=1&#038;fullscreen=0&#038;pip=0\" loading=\"lazy\" loading=\"lazy\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen id=\"vimeoPlayer\"><\/iframe>\n  \n  <!-- Popup Desktop -->\n  <div id=\"popupContainer\" class=\"desktop-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 400px; padding: 20px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n    <h2 style=\"color: #333; font-size: 1.5em; margin: 10px 0;\" id=\"profitez-de-loffre-spciale-\">Profitez de l\u2019offre sp\u00e9ciale !<\/h2>\n    <p style=\"color: #e74c3c; font-size: 1.2em; margin: 10px 0;\">Obtenez notre cours pour seulement <strong id=\"price\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n    <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: block; padding: 10px 20px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 1em; margin: 20px auto;\" rel=\"noopener\">Commencer maintenant<\/a>\n    <button onclick=\"closePopup()\" style=\"padding: 10px 20px; font-size: 1em;\">Fermer<\/button>\n  <\/div>\n\n  <!-- Popup Mobile -->\n  <div id=\"popupContainerMobile\" class=\"mobile-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; max-width: 300px; padding: 15px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n    <p style=\"color: #e74c3c; font-size: 1em; margin: 5px 0;\">Cours sp\u00e9cial \u00e0 <strong id=\"priceMobile\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n    <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: inline-block; padding: 8px 15px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 0.9em;\" rel=\"noopener\">Commencer maintenant<\/a>\n    <button onclick=\"closePopup()\" style=\"padding: 5px 10px; font-size: 0.9em;\">Fermer<\/button>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  var iframe = document.getElementById('vimeoPlayer');\n  var player = new Vimeo.Player(iframe);\n  var isPopupDisplayed = false;\n\n  player.on('play', function() {\n    if (!isPopupDisplayed) {\n      player.on('timeupdate', function(data) {\n        if (data.seconds >= 120 && !isPopupDisplayed) {\n          player.pause().then(function() {\n            if (window.innerWidth > 768) {\n              document.querySelector('.desktop-popup').style.display = 'block';\n            } else {\n              document.querySelector('.mobile-popup').style.display = 'block';\n            }\n            fetchPriceAndUpdatePopup();\n            isPopupDisplayed = true;\n          });\n        }\n      });\n    }\n  });\n\n  function fetchPriceAndUpdatePopup() {\n    fetch('https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144')\n      .then(response => response.text())\n      .then(html => {\n        var parser = new DOMParser();\n        var fetchedDoc = parser.parseFromString(html, 'text\/html');\n        var priceElement = fetchedDoc.querySelector('.ammount .fw-500');\n        var originalPriceElement = fetchedDoc.querySelector('.ammount del');\n        var price = priceElement ? priceElement.textContent.trim() : '29.5\u20ac';\n        var originalPrice = originalPriceElement ? originalPriceElement.textContent.trim() : '59\u20ac';\n\n        document.getElementById('price').textContent = price;\n        document.getElementById('priceMobile').textContent = price;\n        document.querySelector('.desktop-popup del').textContent = originalPrice;\n        document.querySelector('.mobile-popup del').textContent = originalPrice;\n      })\n      .catch(error => console.error('Error fetching the price:', error));\n  }\n\n  function closePopup() {\n    document.querySelector('.desktop-popup').style.display = 'none';\n    document.querySelector('.mobile-popup').style.display = 'none';\n    player.play();\n  }\n});\n<\/script>\n\n\n\n<p>Les exceptions sont des \u00e9v\u00e9nements, qui peuvent modifier le d\u00e9roulement normal d&rsquo;un programme. G\u00e9rer les erreurs en Python signifie utiliser le m\u00e9canisme de gestion des exceptions via les blocs <code>try<\/code>, <code>except<\/code>, <code>else<\/code> et <code>finally<\/code>. Cela vous permet de d\u00e9finir comment les erreurs sont trait\u00e9es et de prendre des mesures correctives sans interrompre le flux normal de votre programme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utiliser le Bloc <code>try<\/code> et <code>except<\/code><\/h3>\n\n\n\n<p>Le bloc <code>try<\/code> vous permet de tester un bloc de code pour d\u00e9tecter les erreurs, tandis que le bloc <code>except<\/code> vous permet de g\u00e9rer l&rsquo;erreur \u00e9ventuelle. Voici un exemple simple :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>try:\n    # Code susceptible de provoquer une exception\n    result = 10 \/ 0\nexcept ZeroDivisionError:\n    # Code \u00e0 ex\u00e9cuter si une exception se produit\n    print(\"Erreur: Division par z\u00e9ro!\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Les Blocs <code>else<\/code> et <code>finally<\/code><\/h3>\n\n\n\n<p>Le bloc <code>else<\/code> sera ex\u00e9cut\u00e9 si aucune exception n&rsquo;est lev\u00e9e dans le bloc <code>try<\/code>. Le bloc <code>finally<\/code> est ex\u00e9cut\u00e9 \u00e0 la fin, qu&rsquo;une exception se produise ou non. Voici un exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>try:\n    result = 10 \/ 2\nexcept ZeroDivisionError:\n    print(\"Erreur: Division par z\u00e9ro!\")\nelse:\n    print(\"La division a r\u00e9ussi. Le r\u00e9sultat est:\", result)\nfinally:\n    print(\"Ce bloc est toujours ex\u00e9cut\u00e9 ind\u00e9pendamment des exceptions.\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Lever des Exceptions Personnalis\u00e9es avec <code>raise<\/code><\/h3>\n\n\n\n<p>Il est possible de lever des exceptions personnalis\u00e9es dans votre code. Cela peut \u00eatre utile pour indiquer des erreurs sp\u00e9cifiques dans votre programme :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>def validate_age(age):\n    if age < 0:\n        raise ValueError(\"L'\u00e2ge ne peut pas \u00eatre n\u00e9gatif\")\n    print(\"L'\u00e2ge est valide\")\n\ntry:\n    validate_age(-1)\nexcept ValueError as ve:\n    print(\"Erreur:\", ve)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er des Classes d'Exception Personnalis\u00e9es<\/h3>\n\n\n\n<p>Pour des sc\u00e9narios plus complexes, vous pouvez d\u00e9finir vos propres classes d'exception en h\u00e9ritant de la classe <code>Exception<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>class InvalidAgeError(Exception):\n    \"\"\"Exception lev\u00e9e pour des \u00e2ges invalides.\"\"\"\n    def __init__(self, age, message=\"L'\u00e2ge est invalide\"):\n        self.age = age\n        self.message = message\n        super().__init__(self.message)\n\ndef validate_age(age):\n    if age < 0:\n        raise InvalidAgeError(age)\n\ntry:\n    validate_age(-5)\nexcept InvalidAgeError as iae:\n    print(f\"Erreur: {iae}\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Travailler avec Plusieurs Blocs <code>except<\/code><\/h3>\n\n\n\n<p>Il est possible d'attraper plusieurs types d'exceptions en utilisant plusieurs blocs <code>except<\/code>. Voici un exemple o\u00f9 nous attrapons \u00e0 la fois <code>ZeroDivisionError<\/code> et <code>ValueError<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>try:\n    x = int(input(\"Entrez un nombre: \"))\n    y = 10 \/ x\nexcept ZeroDivisionError:\n    print(\"Erreur: Division par z\u00e9ro!\")\nexcept ValueError:\n    print(\"Erreur: Vous devez entrer un nombre entier!\")\nelse:\n    print(\"Le r\u00e9sultat est:\", y)\nfinally:\n    print(\"Fin de la gestion des exceptions.\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Utiliser <code>try\/except<\/code> avec des Fichiers<\/h3>\n\n\n\n<p>La gestion des exceptions est tr\u00e8s utile lors de la manipulation de fichiers, pour s'assurer que les erreurs comme les fichiers manquants ou le manque de permission soient g\u00e9r\u00e9es proprement :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>try:\n    with open('nonexistent_file.txt', 'r') as file:\n        data = file.read()\nexcept FileNotFoundError:\n    print(\"Erreur: Le fichier n'existe pas.\")\nexcept PermissionError:\n    print(\"Erreur: Permission refus\u00e9e.\")\nexcept Exception as e:\n    print(f\"Erreur inattendue: {e}\")\nelse:\n    print(\"Fichier lu avec succ\u00e8s.\")\nfinally:\n    print(\"Bloc finally ex\u00e9cut\u00e9.\")\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">G\u00e9rer les Exceptions avec les Biblioth\u00e8ques Externes<\/h2>\n\n\n\n<p>Il est courant d'utiliser des biblioth\u00e8ques externes en Python, et il est important de savoir comment g\u00e9rer les exceptions qu'elles peuvent lever. Voici un exemple avec la biblioth\u00e8que <code>requests<\/code> pour la manipulation de requ\u00eates HTTP :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import requests\n\ntry:\n    response = requests.get('https:\/\/api.exemple.com\/data')\n    response.raise_for_status()  # L\u00e8ve une exception pour les codes de statut HTTP d'erreur\nexcept requests.exceptions.HTTPError as http_err:\n    print(f\"Erreur HTTP: {http_err}\")\nexcept requests.exceptions.ConnectionError as conn_err:\n    print(f\"Erreur de connexion: {conn_err}\")\nexcept Exception as err:\n    print(f\"Erreur inattendue: {err}\")\nelse:\n    print(\"Requ\u00eate r\u00e9ussie, donn\u00e9es:\", response.json())\nfinally:\n    print(\"Fin de la requ\u00eate.\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Conseils pour une Meilleure Gestion des Erreurs<\/h3>\n\n\n\n<p>Il est important de suivre certaines bonnes pratiques pour garantir que la gestion des erreurs en Python soit efficace :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n    <li>Utiliser des exceptions sp\u00e9cifiques lors de la gestion des erreurs.<\/li>\n    <li>\u00c9viter les blocs <code>try\/except<\/code> trop larges, car cela peut cacher des erreurs inattendues.<\/li>\n    <li>Documenter les exceptions lev\u00e9es par vos fonctions afin que les autres d\u00e9veloppeurs puissent comprendre les erreurs potentielles.<\/li>\n<\/ul>\n\n\n\n<p>Si vous souhaitez en savoir plus sur les bonnes pratiques de gestion des exceptions, des ressources comme <a href=\"https:\/\/realpython.com\/tutorials\/best-practices\/\" target=\"_blank\" rel=\"noopener\">Real Python<\/a> peuvent \u00eatre tr\u00e8s utiles.<\/p>\n\n\n\n<p>Pour savoir comment \u00e9crire votre premier programme Python, consultez notre guide sur <a href=\"https:\/\/wikiform.fr\/codespace\/premier-programme-python-hello-world\">Premier Programme Python: Hello World<\/a>. Une bonne gestion des variables peut par ailleurs faciliter le diagnostic des erreurs. Consultez notre article sur <a href=\"https:\/\/wikiform.fr\/codespace\/comprendre-les-variables-en-python\">Comprendre les Variables en Python<\/a> pour en savoir plus.<\/p>\n\n\n\n<p>Il est aussi pertinent de comprendre la saisie utilisateur en Python avant de g\u00e9rer les potentielles erreurs associ\u00e9es. Consultez notre guide complet sur <a href=\"https:\/\/wikiform.fr\/codespace\/saisie-utilisateur-en-python-guide-complet\">Saisie Utilisateur en Python<\/a>.<\/p>\n\n\n\n<p>Si vous travaillez avec des boucles, ma\u00eetriser les exceptions peut rendre vos scripts plus robustes. D\u00e9couvrez nos guides sur les boucles en Python : <a href=\"https:\/\/wikiform.fr\/codespace\/boucle-for-en-python-guide-pratique\">Boucle For en Python<\/a> et <a href=\"https:\/\/wikiform.fr\/codespace\/boucle-while-en-python-astuces-et-exemples\">Boucle While en Python<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>La gestion des <strong>erreurs et exceptions en Python<\/strong> est une comp\u00e9tence cruciale pour tout d\u00e9veloppeur Python. En utilisant correctement les blocs <code>try<\/code>, <code>except<\/code>, <code>else<\/code> et <code>finally<\/code>, vous pouvez cr\u00e9er des programmes plus robustes et plus fiables. Continuez \u00e0 explorer et \u00e0 pratiquer ces concepts pour devenir un ma\u00eetre de la gestion des exceptions en Python!<\/p>\n\n\n\n<a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/wikiform.fr\/codespace\/wp-content\/uploads\/2024\/07\/learnify-formation-PYTHON-offre-50.gif\" loading=\"lazy\" alt=\"Learnify Formation Python Offre 50%\" title=\"\"><\/a>\n","protected":false},"excerpt":{"rendered":"<p>G\u00e9rer Erreurs et Exceptions en Python est essentiel pour \u00e9crire du code robuste et fiable. Les exceptions permettent de traiter les erreurs qui se produisent&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2920,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5753","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-tutoriels"],"acf":[],"_titre_de_la_formation":null,"_description_":null,"_objectifs_pedagogiques":null,"_programme_":null,"_url_de_limage":null,"_materiel_necessaire":null,"_modalites_devaluation_des_acquis":null,"_moyens_pedagogiques_et_techniques":null,"_accessibilite_":null,"_formateur_":null,"menu_order":0,"_links":{"self":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/comments?post=5753"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5753\/revisions"}],"predecessor-version":[{"id":5754,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5753\/revisions\/5754"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2920"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}