<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Exceptions et journalisation on kodkod | Cours d'introduction</title><link>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/</link><description>Recent content in Exceptions et journalisation on kodkod | Cours d'introduction</description><generator>Hugo</generator><language>fr</language><copyright>מבואות קודקוד</copyright><atom:link href="https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/index.xml" rel="self" type="application/rss+xml"/><item><title>Exceptions A : pourquoi gérer les erreurs, try et except</title><link>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/01-try-except/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/01-try-except/</guid><description>&lt;h2 id="quallons-nous-apprendre-"&gt;Qu&amp;rsquo;allons-nous apprendre ?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ce qu&amp;rsquo;est une &lt;strong&gt;Exception&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Pourquoi un vrai logiciel doit &lt;strong&gt;gérer&lt;/strong&gt; les erreurs et ne pas planter.&lt;/li&gt;
&lt;li&gt;La syntaxe &lt;code&gt;try&lt;/code&gt; / &lt;code&gt;except&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Une gestion &lt;strong&gt;différente&lt;/strong&gt; pour différents types d&amp;rsquo;erreurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pourquoi-en-avons-nous-besoin-"&gt;Pourquoi en avons-nous besoin ?&lt;/h2&gt;
&lt;p&gt;Imaginez un petit serveur de calculatrice : un client envoie &lt;code&gt;&amp;quot;hello&amp;quot;&lt;/code&gt; au lieu d&amp;rsquo;un nombre, &lt;strong&gt;et tout le serveur plante&lt;/strong&gt;. Tous les clients qui viennent ensuite reçoivent « Connection refused ».&lt;/p&gt;</description></item><item><title>Exceptions B : else et finally — la structure complète</title><link>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/02-else-finally/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/02-else-finally/</guid><description>&lt;h2 id="quallons-nous-apprendre-"&gt;Qu&amp;rsquo;allons-nous apprendre ?&lt;/h2&gt;
&lt;p&gt;Dans la leçon précédente, nous avons utilisé &lt;code&gt;try&lt;/code&gt; et &lt;code&gt;except&lt;/code&gt;. La structure comporte deux autres parties :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;else&lt;/code&gt;&lt;/strong&gt; — s&amp;rsquo;exécute &lt;strong&gt;seulement s&amp;rsquo;il n&amp;rsquo;y a pas eu d&amp;rsquo;erreur&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;finally&lt;/code&gt;&lt;/strong&gt; — s&amp;rsquo;exécute &lt;strong&gt;toujours&lt;/strong&gt;, avec ou sans erreur.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pourquoi-en-avons-nous-besoin-"&gt;Pourquoi en avons-nous besoin ?&lt;/h2&gt;
&lt;p&gt;Imaginez un code qui ouvre une connexion à une base de données (les thèmes backend et bases de données), effectue une action et ferme la connexion. Que se passe-t-il si l&amp;rsquo;action échoue au milieu ? Si la fermeture est écrite après l&amp;rsquo;action, elle &lt;strong&gt;ne sera pas exécutée&lt;/strong&gt;, et la connexion reste ouverte. Après une centaine d&amp;rsquo;échecs de ce genre, le serveur plantera faute de connexions disponibles.&lt;/p&gt;</description></item><item><title>Exceptions C : raise — lancer une erreur nous-mêmes</title><link>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/03-raise/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/03-raise/</guid><description>&lt;h2 id="quallons-nous-apprendre-"&gt;Qu&amp;rsquo;allons-nous apprendre ?&lt;/h2&gt;
&lt;p&gt;Jusqu&amp;rsquo;à présent, c&amp;rsquo;est &lt;strong&gt;Python&lt;/strong&gt; qui lançait les erreurs, et nous les &lt;strong&gt;attrapions&lt;/strong&gt;. Aujourd&amp;rsquo;hui, nous allons apprendre à les lancer nous-mêmes, avec &lt;strong&gt;&lt;code&gt;raise&lt;/code&gt;&lt;/strong&gt;, quand notre code détecte un état invalide.&lt;/p&gt;</description></item><item><title>Journalisation A : pourquoi print n'est pas du logging, et les niveaux du journal</title><link>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/04-logging-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/04-logging-basics/</guid><description>&lt;h2 id="quallons-nous-apprendre-"&gt;Qu&amp;rsquo;allons-nous apprendre ?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ce qu&amp;rsquo;est un &lt;strong&gt;journal&lt;/strong&gt; (Log) et pourquoi les vrais systèmes en écrivent un.&lt;/li&gt;
&lt;li&gt;Pourquoi &lt;strong&gt;&lt;code&gt;print&lt;/code&gt; n&amp;rsquo;est pas du logging&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Le module &lt;strong&gt;&lt;code&gt;logging&lt;/code&gt;&lt;/strong&gt; de Python.&lt;/li&gt;
&lt;li&gt;Les &lt;strong&gt;cinq niveaux&lt;/strong&gt; du journal : &lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, &lt;code&gt;critical&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pourquoi-en-avons-nous-besoin-"&gt;Pourquoi en avons-nous besoin ?&lt;/h2&gt;
&lt;p&gt;Le serveur que vous écrirez dans les thèmes backend et bases de données tournera &lt;strong&gt;sans que personne ne le surveille&lt;/strong&gt;, peut-être sur un ordinateur dans le cloud, en pleine nuit. Demain matin, un client dira « ma commande a disparu pendant la nuit ». Comment saurez-vous ce qui s&amp;rsquo;est passé ?&lt;/p&gt;</description></item><item><title>Journalisation B : enregistrer les journaux dans un fichier et consigner les actions importantes</title><link>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/05-logging-to-file/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/fr/docs/python-errors-logging/05-logging-to-file/</guid><description>&lt;h2 id="quallons-nous-apprendre-"&gt;Qu&amp;rsquo;allons-nous apprendre ?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Comment écrire les journaux &lt;strong&gt;dans un fichier&lt;/strong&gt;, et pas seulement à l&amp;rsquo;écran.&lt;/li&gt;
&lt;li&gt;Les &lt;strong&gt;modes d&amp;rsquo;écriture&lt;/strong&gt; : ajouter à la fin du fichier, ou repartir de zéro.&lt;/li&gt;
&lt;li&gt;Comment enregistrer une erreur &lt;strong&gt;avec tous les détails&lt;/strong&gt; (Traceback).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quoi consigner&lt;/strong&gt; : quelles actions sont importantes et à quel niveau.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pourquoi-en-avons-nous-besoin-"&gt;Pourquoi en avons-nous besoin ?&lt;/h2&gt;
&lt;p&gt;Vous vous souvenez du thème sur l&amp;rsquo;ordinateur, le système d&amp;rsquo;exploitation et le réseau ? Ce qui est à l&amp;rsquo;écran et en mémoire disparaît à la fin du programme. Un &lt;strong&gt;fichier&lt;/strong&gt; est conservé sur le stockage. Un journal à l&amp;rsquo;écran n&amp;rsquo;aide que celui qui est assis devant &lt;strong&gt;maintenant&lt;/strong&gt;. Un journal dans un fichier peut être ouvert &lt;strong&gt;demain&lt;/strong&gt;, fouillé, et utilisé pour comprendre ce qui s&amp;rsquo;est passé pendant la nuit.&lt;/p&gt;</description></item></channel></rss>