{"id":5362,"date":"2016-08-06T12:38:48","date_gmt":"2016-08-06T12:38:48","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=5362"},"modified":"2020-02-07T10:58:21","modified_gmt":"2020-02-07T10:58:21","slug":"les-exceptions","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=5362","title":{"rendered":"Les exceptions"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/08\/exception.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-5372\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/08\/exception.png\" alt=\"exception\" width=\"211\" height=\"286\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/08\/exception.png 344w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/08\/exception-221x300.png 221w\" sizes=\"(max-width: 211px) 100vw, 211px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>Les exceptions, en C++, sont un moyen de <strong>g\u00e9rer les erreurs<\/strong> dans les programmes.<\/p>\n<p><strong>Pr\u00e9requis :<\/strong><\/p>\n<p>&#8211; Savoir lire du C++<\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Pour expliquer rapidement, une exception est une situation donn\u00e9e dans laquelle un programme, qui dans une circonstance particuli\u00e8re, <strong>lance<\/strong> une <strong>erreur<\/strong>.<\/p>\n<p>Chaque exception lanc\u00e9e dans le programme<strong> doit \u00eatre trait\u00e9e<\/strong>, sinon le programme se termine et g\u00e9n\u00e8re une erreur fatale.<\/p>\n<p>L&rsquo;apparition d&rsquo;une exception interrompt l&rsquo;ex\u00e9cution normale du programme et provoque sa <strong>reprise dans le gestionnaire d&rsquo;exception<\/strong> le plus proche.<\/p>\n<p>Elles sont d\u00e9clench\u00e9es gr\u00e2ce \u00e0 l&rsquo;utilisation du mot-cl\u00e9 <em><strong>throw<\/strong><\/em>.<\/p>\n<p>Il est conseill\u00e9 de <strong>d\u00e9river<\/strong> chaque exception par celle <strong>std::exception\u00a0<\/strong> (en t\u00eate &lt;exception&gt;).<\/p>\n<p>Cette classe dispose d&rsquo;une fonction membre <strong>what()<\/strong> qui renvoie une description de l&rsquo;exception.<\/p>\n<p>On rattrape les exception par r\u00e9f\u00e9rence, on les envoie par valeur.<\/p>\n<p><strong>Exemple d&rsquo;exception :<\/strong><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvoid UneFonction()\r\n{\r\n[...]\r\n    throw std::exception(&quot;Une erreur s'est lanc\u00e9e !&quot;);\r\n[...]\r\n}\r\n\r\ntry\r\n{\r\n    UneFonction();\r\n}\r\ncatch(std::exception&amp; e )\r\n{\r\n    std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\r\n}\r\ncatch ( ... ) \/\/ traite toutes les autres exceptions\r\n{\r\n\u00a0\u00a0\u00a0 std::cerr &lt;&lt; &quot;Erreur inconnue.\\n&quot;;\r\n}\r\n\r\n<\/pre>\n<p><\/p>\n<p>Il existe une fonction qui permet de personnaliser la fonction d&rsquo;appel lors d&rsquo;une exception non g\u00e9r\u00e9e ou trait\u00e9e : <strong>set_terminate(&#8230;)<\/strong><\/p>\n<p>A noter qu&rsquo;on peut coupler le concept du RAII avec les exceptions (voir l&rsquo;article)<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p>Les exceptions offre un moyen tr\u00e8s rapide et \u00e9l\u00e9gant de g\u00e9rer les erreurs dans les programmes.<\/p>\n<p><strong>R\u00e9f\u00e9rences :<\/strong><\/p>\n<p>&#8211; http:\/\/guillaume.belz.free.fr\/doku.php?id=pourquoi_le_raii_est_fondamental_en_c<\/p>\n<p>&#8211; http:\/\/cpp.developpez.com\/faq\/cpp\/?page=Utilisation-des-exceptions#Qu-est-ce-qu-une-exception<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Les exceptions, en C++, sont un moyen de g\u00e9rer les erreurs dans les programmes. Pr\u00e9requis : &#8211; Savoir lire du C++ Explications : Pour expliquer rapidement, une exception est une situation donn\u00e9e dans laquelle un programme, qui dans une circonstance particuli\u00e8re, lance une erreur. Chaque exception lanc\u00e9e dans le programme doit \u00eatre trait\u00e9e, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/5362"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5362"}],"version-history":[{"count":21,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/5362\/revisions"}],"predecessor-version":[{"id":5916,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/5362\/revisions\/5916"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}