<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Исключения и логирование on kodkod | Вводный курс</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/python-errors-logging/</link><description>Recent content in Исключения и логирование on kodkod | Вводный курс</description><generator>Hugo</generator><language>ru</language><copyright>מבואות קודקוד</copyright><atom:link href="https://intro-kodkod-6.nm-ambition.com/ru/docs/python-errors-logging/index.xml" rel="self" type="application/rss+xml"/><item><title>Исключения A: зачем нужна обработка ошибок, try и except</title><link>https://intro-kodkod-6.nm-ambition.com/ru/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/ru/docs/python-errors-logging/01-try-except/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Что такое &lt;strong&gt;исключение&lt;/strong&gt; (Exception).&lt;/li&gt;
&lt;li&gt;Почему настоящая программа должна &lt;strong&gt;обрабатывать&lt;/strong&gt; ошибки, а не падать.&lt;/li&gt;
&lt;li&gt;Синтаксис &lt;code&gt;try&lt;/code&gt; / &lt;code&gt;except&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Разную&lt;/strong&gt; обработку для разных видов ошибок.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;Представьте маленький сервер-калькулятор: один клиент отправляет &lt;code&gt;&amp;quot;hello&amp;quot;&lt;/code&gt; вместо числа, &lt;strong&gt;и весь сервер падает&lt;/strong&gt;. Все клиенты, которые придут после него, получают «Connection refused».&lt;/p&gt;</description></item><item><title>Исключения B: else и finally — полная структура</title><link>https://intro-kodkod-6.nm-ambition.com/ru/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/ru/docs/python-errors-logging/02-else-finally/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;p&gt;В предыдущем уроке мы использовали &lt;code&gt;try&lt;/code&gt; и &lt;code&gt;except&lt;/code&gt;. В структуре есть ещё две части:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;else&lt;/code&gt;&lt;/strong&gt; — выполняется, &lt;strong&gt;только если ошибки не было&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;finally&lt;/code&gt;&lt;/strong&gt; — выполняется &lt;strong&gt;всегда&lt;/strong&gt;, с ошибкой или без.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;Представьте код, который открывает соединение с базой данных (темы бэкенда и баз данных), выполняет действие и закрывает соединение. Что будет, если действие упадёт посередине? Если закрытие записано после действия, оно &lt;strong&gt;не будет выполнено&lt;/strong&gt;, и соединение останется открытым. После сотни таких сбоев сервер упадёт, потому что у него закончились соединения.&lt;/p&gt;</description></item><item><title>Исключения C: raise — выбрасываем ошибку сами</title><link>https://intro-kodkod-6.nm-ambition.com/ru/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/ru/docs/python-errors-logging/03-raise/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;p&gt;До сих пор ошибки выбрасывал &lt;strong&gt;Python&lt;/strong&gt;, а мы их &lt;strong&gt;ловили&lt;/strong&gt;. Сегодня научимся выбрасывать их сами — с помощью &lt;strong&gt;&lt;code&gt;raise&lt;/code&gt;&lt;/strong&gt;, когда наш код обнаруживает недопустимое состояние.&lt;/p&gt;</description></item><item><title>Логирование A: почему print — это не логирование, и уровни лога</title><link>https://intro-kodkod-6.nm-ambition.com/ru/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/ru/docs/python-errors-logging/04-logging-basics/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Что такое &lt;strong&gt;лог&lt;/strong&gt; (Log) и почему настоящие системы его пишут.&lt;/li&gt;
&lt;li&gt;Почему &lt;strong&gt;&lt;code&gt;print&lt;/code&gt; — это не логирование&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Модуль Python &lt;strong&gt;&lt;code&gt;logging&lt;/code&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Пять уровней&lt;/strong&gt; лога: &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="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;Сервер, который вы напишете в темах бэкенда и баз данных, будет работать &lt;strong&gt;без присмотра&lt;/strong&gt;, возможно, на компьютере в облаке, посреди ночи. Завтра утром клиент скажет: «мой заказ ночью пропал». Как узнать, что произошло?&lt;/p&gt;</description></item><item><title>Логирование B: сохранение логов в файл и запись важных действий</title><link>https://intro-kodkod-6.nm-ambition.com/ru/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/ru/docs/python-errors-logging/05-logging-to-file/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Как писать логи &lt;strong&gt;в файл&lt;/strong&gt;, а не только на экран.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Режимы записи&lt;/strong&gt;: дописывать в конец файла или начинать заново.&lt;/li&gt;
&lt;li&gt;Как записать ошибку &lt;strong&gt;со всеми деталями&lt;/strong&gt; (Traceback).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Что записывать&lt;/strong&gt;: какие действия важны и на каком уровне.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;Помните тему о компьютере, операционной системе и сети? То, что на экране и в памяти, исчезает, когда программа завершается. &lt;strong&gt;Файл&lt;/strong&gt; хранится на накопителе (Storage). Лог на экране помогает только тому, кто сидит перед ним &lt;strong&gt;сейчас&lt;/strong&gt;. Лог в файле можно открыть &lt;strong&gt;завтра&lt;/strong&gt;, искать в нём и понять, что происходило ночью.&lt;/p&gt;</description></item></channel></rss>