HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Определение</a><ul><li><a>Синтаксические</a></li>
1 <ul><li><a>Определение</a><ul><li><a>Синтаксические</a></li>
2 <li><a>Логические</a></li>
2 <li><a>Логические</a></li>
3 <li><a>Исключения</a></li>
3 <li><a>Исключения</a></li>
4 </ul></li>
4 </ul></li>
5 <li><a>Перехват</a><ul><li><a>Несколько except</a></li>
5 <li><a>Перехват</a><ul><li><a>Несколько except</a></li>
6 <li><a>Вложенные и else</a></li>
6 <li><a>Вложенные и else</a></li>
7 <li><a>Finally</a></li>
7 <li><a>Finally</a></li>
8 </ul></li>
8 </ul></li>
9 <li><a>Управление</a><ul><li><a>Исключения пользователя</a></li>
9 <li><a>Управление</a><ul><li><a>Исключения пользователя</a></li>
10 <li><a>Записывание в лог</a></li>
10 <li><a>Записывание в лог</a></li>
11 <li><a>Иерархия</a></li>
11 <li><a>Иерархия</a></li>
12 </ul></li>
12 </ul></li>
13 </ul><p>Обработка исключений Python - это своеобразный и весьма мощный механизм, который позволяет управлять приложением при определенных обстоятельствах. С его помощью удается избежать аварийного завершения ввиду непредвиденных и внезапных багов.</p>
13 </ul><p>Обработка исключений Python - это своеобразный и весьма мощный механизм, который позволяет управлять приложением при определенных обстоятельствах. С его помощью удается избежать аварийного завершения ввиду непредвиденных и внезапных багов.</p>
14 <p>Соответствующая возможность в Питоне реализована посредством синтактических оборотов и конструкций. Они предназначаются для отлова и обработки исключения, чтобы утилита грамотного выполняла изначально предусмотренный алгоритм.</p>
14 <p>Соответствующая возможность в Питоне реализована посредством синтактических оборотов и конструкций. Они предназначаются для отлова и обработки исключения, чтобы утилита грамотного выполняла изначально предусмотренный алгоритм.</p>
15 <h2>Определение</h2>
15 <h2>Определение</h2>
16 <p>В коде при разработке контента нередко происходит возникновение разных ошибок и неполадок. Они создают препятствия по достижению желаемого изначально результата.</p>
16 <p>В коде при разработке контента нередко происходит возникновение разных ошибок и неполадок. Они создают препятствия по достижению желаемого изначально результата.</p>
17 <p>Далеко не каждый баг приводит к краху программы: некоторые из них ликвидируются на этапе компиляции, а какие-то не заметны до возникновения "особых" обстоятельств. Иногда можно даже увидеть в коде ошибки, которые от добросовестности разработчика никак не зависят. Они появляются при определенных условиях функционирования утилиты.</p>
17 <p>Далеко не каждый баг приводит к краху программы: некоторые из них ликвидируются на этапе компиляции, а какие-то не заметны до возникновения "особых" обстоятельств. Иногда можно даже увидеть в коде ошибки, которые от добросовестности разработчика никак не зависят. Они появляются при определенных условиях функционирования утилиты.</p>
18 <p>Сегодня в Питоне выделяют такие типы ошибок:</p>
18 <p>Сегодня в Питоне выделяют такие типы ошибок:</p>
19 <ul><li>синтаксические - причиной их возникновения становятся погрешности синтаксиса в коде;</li>
19 <ul><li>синтаксические - причиной их возникновения становятся погрешности синтаксиса в коде;</li>
20 <li>логические - возникают из-за логических неточностей алгоритмов;</li>
20 <li>логические - возникают из-за логических неточностей алгоритмов;</li>
21 <li>исключения - вызываются за счет некорректных действий юзеров или операционной системы.</li>
21 <li>исключения - вызываются за счет некорректных действий юзеров или операционной системы.</li>
22 </ul><p>Каждый вариант предусматривает собственные особенности и нюансы. Далее они будут рассмотрены более детально. Это поможет грамотно реагировать на баги и использовать имеющиеся знания для предельной результативности обработки исключений в Python.</p>
22 </ul><p>Каждый вариант предусматривает собственные особенности и нюансы. Далее они будут рассмотрены более детально. Это поможет грамотно реагировать на баги и использовать имеющиеся знания для предельной результативности обработки исключений в Python.</p>
23 <h3>Синтаксические</h3>
23 <h3>Синтаксические</h3>
24 <p>Возникают из-за того, что разработчик не соблюдал общепринятые нормы языка. Пример - пропустил круглую скобку в нужном месте или неграмотно прописал функции в блоке кодификации. Подобные погрешности хорошо отлавливаются посредством компилятора. Он сообщит программеру информацию об ошибке.</p>
24 <p>Возникают из-за того, что разработчик не соблюдал общепринятые нормы языка. Пример - пропустил круглую скобку в нужном месте или неграмотно прописал функции в блоке кодификации. Подобные погрешности хорошо отлавливаются посредством компилятора. Он сообщит программеру информацию об ошибке.</p>
25 <p>Вот пример, который покажет, что произойдет, если пропустить двойные кавычки при выводе строковых литералов:</p>
25 <p>Вот пример, который покажет, что произойдет, если пропустить двойные кавычки при выводе строковых литералов:</p>
26 Print (“Hello World!)<p>Программа при компиляции укажет следующий текст:</p>
26 Print (“Hello World!)<p>Программа при компиляции укажет следующий текст:</p>
27 File “main.py”, line 1 Print (“Hello World!) ^ SyntaxError: EOL while scanning string literal<h3>Логические</h3>
27 File “main.py”, line 1 Print (“Hello World!) ^ SyntaxError: EOL while scanning string literal<h3>Логические</h3>
28 <p>Это - наиболее сложный вариант для обнаружения. Связано это с тем, что отлов подобных неполадок не осуществляется при компиляции. Аналогичным образом дела обстоят и с готовым приложением.</p>
28 <p>Это - наиболее сложный вариант для обнаружения. Связано это с тем, что отлов подобных неполадок не осуществляется при компиляции. Аналогичным образом дела обстоят и с готовым приложением.</p>
29 <p>Логические ошибки - это следствие недостатков в логике задействованных алгоритмов. Из-за этого программер не может достичь желаемого итога.</p>
29 <p>Логические ошибки - это следствие недостатков в логике задействованных алгоритмов. Из-за этого программер не может достичь желаемого итога.</p>
30 <p>Print (avg(10, 20))</p>
30 <p>Print (avg(10, 20))</p>
31 <p>Соответствующий код - это пример работы функции, которая отвечает за поиск среднего значения двух чисел. Она не будет работать в подобном виде. Связано это с логической ошибкой - формула прописана неправильно.</p>
31 <p>Соответствующий код - это пример работы функции, которая отвечает за поиск среднего значения двух чисел. Она не будет работать в подобном виде. Связано это с логической ошибкой - формула прописана неправильно.</p>
32 <h3>Исключения</h3>
32 <h3>Исключения</h3>
33 <p>Исключения в Python - это последний тип багов. Он будет проявляться в зависимости от наличия тех или иных обстоятельств, меняющих ход работы программы.</p>
33 <p>Исключения в Python - это последний тип багов. Он будет проявляться в зависимости от наличия тех или иных обстоятельств, меняющих ход работы программы.</p>
34 <p>Исключения обычно видно во время обработки кодификации. Ниже - пример, который указывает на невозможность проведения операции "деление на ноль":</p>
34 <p>Исключения обычно видно во время обработки кодификации. Ниже - пример, который указывает на невозможность проведения операции "деление на ноль":</p>
35 <p>Print (10/0)</p>
35 <p>Print (10/0)</p>
36 <p>Если попытаться вывести на экран результат, утилита вызовет следующий код?</p>
36 <p>Если попытаться вывести на экран результат, утилита вызовет следующий код?</p>
37 <p>Результат выполнения программы - это исключительная ситуация. Следствием станет аварийное завершение работы и вывод ошибки на дисплей. Тут отобразится файл, а также номер строчки кода, где обнаружено исключение ZeroDivisionError. Ниже - это краткое описание бага (Division by zero).</p>
37 <p>Результат выполнения программы - это исключительная ситуация. Следствием станет аварийное завершение работы и вывод ошибки на дисплей. Тут отобразится файл, а также номер строчки кода, где обнаружено исключение ZeroDivisionError. Ниже - это краткое описание бага (Division by zero).</p>
38 <h2>Перехват</h2>
38 <h2>Перехват</h2>
39 <p>Далее исключения будут рассмотрены более детально. Чтобы их наличие не могло дать прерывание программы, нужно грамотно провести его обработку. Достижение результата осуществляется посредством специальных механизмов. Они предотвращают все непредвиденные ситуации и используются на практике довольно часто.</p>
39 <p>Далее исключения будут рассмотрены более детально. Чтобы их наличие не могло дать прерывание программы, нужно грамотно провести его обработку. Достижение результата осуществляется посредством специальных механизмов. Они предотвращают все непредвиденные ситуации и используются на практике довольно часто.</p>
40 <p>О перехвате необходимо запомнить следующее:</p>
40 <p>О перехвате необходимо запомнить следующее:</p>
41 <ul><li>процесс помогает миновать сбои в работе алгоритма;</li>
41 <ul><li>процесс помогает миновать сбои в работе алгоритма;</li>
42 <li>достигнуть результата удается за счет расширения возможностей блока кода, которые позволяют действовать с учетом новых обстоятельств.</li>
42 <li>достигнуть результата удается за счет расширения возможностей блока кода, которые позволяют действовать с учетом новых обстоятельств.</li>
43 </ul><p>Вот пример попытки запуска утилиты, которая открывает текстовый документ:</p>
43 </ul><p>Вот пример попытки запуска утилиты, которая открывает текстовый документ:</p>
44 Print (“Program started”) Print (“Opening file…”) F = open (“data.txt”) Print (“Program finished”)<p>После того, как приложение будет обработано, на экране появится такая надпись:</p>
44 Print (“Program started”) Print (“Opening file…”) F = open (“data.txt”) Print (“Program finished”)<p>После того, как приложение будет обработано, на экране появится такая надпись:</p>
45 <p>Здесь происходит следующее:</p>
45 <p>Здесь происходит следующее:</p>
46 <ol><li>Print написано грамотно.</li>
46 <ol><li>Print написано грамотно.</li>
47 <li>Утилита не будет выполняться, так как файл с указанным именем не найден на жестком диске устройства.</li>
47 <li>Утилита не будет выполняться, так как файл с указанным именем не найден на жестком диске устройства.</li>
48 <li>Программное обеспечение сгенерировало исключение FileNotFoundError. Оно указывает на неполадки при вводе или выводе.</li>
48 <li>Программное обеспечение сгенерировало исключение FileNotFoundError. Оно указывает на неполадки при вводе или выводе.</li>
49 <li>Последняя строчка кода - это сообщение о завершении утилиты. Она не отображается. Это свидетельствует о том, что далеко не все операции, предусмотренные ПО, будут выполнены из-за обнаруженного исключения.</li>
49 <li>Последняя строчка кода - это сообщение о завершении утилиты. Она не отображается. Это свидетельствует о том, что далеко не все операции, предусмотренные ПО, будут выполнены из-за обнаруженного исключения.</li>
50 </ol><p>Теперь можно рассмотреть блок try except. Он позволит обработать исключительную ситуацию без завершения уже запущенного приложения со стороны пользователя:</p>
50 </ol><p>Теперь можно рассмотреть блок try except. Он позволит обработать исключительную ситуацию без завершения уже запущенного приложения со стороны пользователя:</p>
51 Print (“Program started”) Try: Print (“Opening file…”) F = open (“data.txt”) Except: Print (“File not found”) Print (“Program finished”)<p>Здесь:</p>
51 Print (“Program started”) Try: Print (“Opening file…”) F = open (“data.txt”) Except: Print (“File not found”) Print (“Program finished”)<p>Здесь:</p>
52 <ol><li>Блок try имеет опасную кодификацию, которая способна прервать функционирование утилиты.</li>
52 <ol><li>Блок try имеет опасную кодификацию, которая способна прервать функционирование утилиты.</li>
53 <li>Except отвечает за инструкцию, которую необходимо обработать при баге.</li>
53 <li>Except отвечает за инструкцию, которую необходимо обработать при баге.</li>
54 <li>Программа вследствие обработки кодификации не завершается - об этом свидетельствует последний вывод функции print.</li>
54 <li>Программа вследствие обработки кодификации не завершается - об этом свидетельствует последний вывод функции print.</li>
55 </ol><p>Данный прием при грамотном использовании позволяет в случае неполадок продолжить работу с софтом.</p>
55 </ol><p>Данный прием при грамотном использовании позволяет в случае неполадок продолжить работу с софтом.</p>
56 <h3>Несколько except</h3>
56 <h3>Несколько except</h3>
57 <p>Теперь создадим несколько блоков except. В зависимости от того, какой тип исключения нужно обработать, будет меняться итоговый результат. Обычно соответствующей операции подлежат частные случаи, после - общие.</p>
57 <p>Теперь создадим несколько блоков except. В зависимости от того, какой тип исключения нужно обработать, будет меняться итоговый результат. Обычно соответствующей операции подлежат частные случаи, после - общие.</p>
58 <p>Вот - наглядный пример exceptions.</p>
58 <p>Вот - наглядный пример exceptions.</p>
59 <h3>Вложенные и else</h3>
59 <h3>Вложенные и else</h3>
60 <p>Блоки типа try except могут выступать в виде вложенных, чтобы обеспечивать гибкое управление исключениями в Python.</p>
60 <p>Блоки типа try except могут выступать в виде вложенных, чтобы обеспечивать гибкое управление исключениями в Python.</p>
61 <p>Для соответствующей кодификации требуется запомнить следующее:</p>
61 <p>Для соответствующей кодификации требуется запомнить следующее:</p>
62 <ol><li>Она отвечает за демонстрацию попытки открытия текстового файла с записью в него определенной строки.</li>
62 <ol><li>Она отвечает за демонстрацию попытки открытия текстового файла с записью в него определенной строки.</li>
63 <li>Каждая цель задействует собственный блок try.</li>
63 <li>Каждая цель задействует собственный блок try.</li>
64 <li>Тут применяется конструкция с else, которая выполняется в случае, если в утилите нет корректировок.</li>
64 <li>Тут применяется конструкция с else, которая выполняется в случае, если в утилите нет корректировок.</li>
65 <li>В приведенном примере else будет работать, если операция write будет успешно выполнена.</li>
65 <li>В приведенном примере else будет работать, если операция write будет успешно выполнена.</li>
66 <li>По умолчанию документ открывается на чтение в текстовом режиме. При его открытии необходимо задействовать работу "w". Он отвечает за запись.</li>
66 <li>По умолчанию документ открывается на чтение в текстовом режиме. При его открытии необходимо задействовать работу "w". Он отвечает за запись.</li>
67 </ol><p>Если файла не было ранее на жестком диске, он будет создан в виде нового. В противном случае - производится перезапись. Все манипуляции выводятся на дисплей посредством print.</p>
67 </ol><p>Если файла не было ранее на жестком диске, он будет создан в виде нового. В противном случае - производится перезапись. Все манипуляции выводятся на дисплей посредством print.</p>
68 <h3>Finally</h3>
68 <h3>Finally</h3>
69 <p>Случается и так, что в утилите обрабатывают определенные запросы, независимо от вызова исключений. На помощь придет блок finally. Он содержит инструкции, которые будут выполняться всегда.</p>
69 <p>Случается и так, что в утилите обрабатывают определенные запросы, независимо от вызова исключений. На помощь придет блок finally. Он содержит инструкции, которые будут выполняться всегда.</p>
70 <p>Пример помогает улучшить приложение путем добавления возможности закрывать текстовый документ.</p>
70 <p>Пример помогает улучшить приложение путем добавления возможности закрывать текстовый документ.</p>
71 <p>Чтобы упростить процесс коддинга, была разработана конструкция with/as. Она автоматизирует некоторые методы. Пример - закрытие файла заданного объекта. Результат все равно выводится через print.</p>
71 <p>Чтобы упростить процесс коддинга, была разработана конструкция with/as. Она автоматизирует некоторые методы. Пример - закрытие файла заданного объекта. Результат все равно выводится через print.</p>
72 <p>Утилита обрабатывает все типы исключений, во всех ситуациях завершается естественным путем. Заданный алгоритм не будет экстренно прерываться.</p>
72 <p>Утилита обрабатывает все типы исключений, во всех ситуациях завершается естественным путем. Заданный алгоритм не будет экстренно прерываться.</p>
73 <h2>Управление</h2>
73 <h2>Управление</h2>
74 <p>Упомянутый ЯП дает возможность создания пользовательских исключений. Логирование программы сюда тоже включено.</p>
74 <p>Упомянутый ЯП дает возможность создания пользовательских исключений. Логирование программы сюда тоже включено.</p>
75 <h3>Исключения пользователя</h3>
75 <h3>Исключения пользователя</h3>
76 <p>Обычно они в нужных ситуациях вызываются самостоятельно. Чтобы применить оные, необходимо задействовать ключевое слово raise. Далее указывается создание нового объекта типа Exception. Его удастся позже обработать через обычные конструкции try-except:</p>
76 <p>Обычно они в нужных ситуациях вызываются самостоятельно. Чтобы применить оные, необходимо задействовать ключевое слово raise. Далее указывается создание нового объекта типа Exception. Его удастся позже обработать через обычные конструкции try-except:</p>
77 print("Program started") try: raise Exception("User Exception!") except Exception as e: print(str(e)) print("Program finished") Program started User Exception! Program finished<p>При создании собственного исключения нужно запомнить следующее:</p>
77 print("Program started") try: raise Exception("User Exception!") except Exception as e: print(str(e)) print("Program finished") Program started User Exception! Program finished<p>При создании собственного исключения нужно запомнить следующее:</p>
78 <ol><li>Для этого требуется создать новый класс, который будет наследником базового типа Exception.</li>
78 <ol><li>Для этого требуется создать новый класс, который будет наследником базового типа Exception.</li>
79 <li>Соответствующий прием позволит осуществлять запуск особых видов исключений в ситуациях, когда юзер ведет себя не по заданному алгоритму.</li>
79 <li>Соответствующий прием позволит осуществлять запуск особых видов исключений в ситуациях, когда юзер ведет себя не по заданному алгоритму.</li>
80 <li>В конструкторе Exception прописывается текст исключения.</li>
80 <li>В конструкторе Exception прописывается текст исключения.</li>
81 <li>После его обработки и схватывания удается извлечь оный через str.</li>
81 <li>После его обработки и схватывания удается извлечь оный через str.</li>
82 </ol><p>Вот пример с исключением типа raises NegativeAge. Отвечает за невозможность указания отрицательного возраста юзера:</p>
82 </ol><p>Вот пример с исключением типа raises NegativeAge. Отвечает за невозможность указания отрицательного возраста юзера:</p>
83 <h3>Записывание в лог</h3>
83 <h3>Записывание в лог</h3>
84 <p>В процессе изучения исключений, print, а также raise, recent call last, most recent call и иных особенностей Питона, может потребоваться запись в лог. Она помогает выводить спецсообщения, которые никак не отражаются на работоспособности утилиты.</p>
84 <p>В процессе изучения исключений, print, а также raise, recent call last, most recent call и иных особенностей Питона, может потребоваться запись в лог. Она помогает выводить спецсообщения, которые никак не отражаются на работоспособности утилиты.</p>
85 <p>Для использования библиотеки логов требуется произвести импорт в верхней части кодификации. Существуют различные типы логов, отобразить которые поможет команда logging.</p>
85 <p>Для использования библиотеки логов требуется произвести импорт в верхней части кодификации. Существуют различные типы логов, отобразить которые поможет команда logging.</p>
86 <p>Здесь:</p>
86 <p>Здесь:</p>
87 <ol><li>Клиенту доступны разные виды сообщений, которые реализуются не через print. Задействованы они обычно при разработке, лишний текст в консоли не отображается.</li>
87 <ol><li>Клиенту доступны разные виды сообщений, которые реализуются не через print. Задействованы они обычно при разработке, лишний текст в консоли не отображается.</li>
88 <li>Logging позволяет осуществлять запись в лог.</li>
88 <li>Logging позволяет осуществлять запись в лог.</li>
89 <li>Уровень INFO - это указатель на то, что сообщения уровней ниже (debug) не отображаются в логе.</li>
89 <li>Уровень INFO - это указатель на то, что сообщения уровней ниже (debug) не отображаются в логе.</li>
90 </ol><p>Итоговый код:</p>
90 </ol><p>Итоговый код:</p>
91 <p>В конце добавляется строка сообщения о типе одного сработавшего исключения в Python.</p>
91 <p>В конце добавляется строка сообщения о типе одного сработавшего исключения в Python.</p>
92 <h3>Иерархия</h3>
92 <h3>Иерархия</h3>
93 <p>Исключения обладают строгой иерархией, которую нужно знать как print, in module, traceback и иные особенности языка. Вершина - это BaseException, который включает в себя все существующие типы исключений:</p>
93 <p>Исключения обладают строгой иерархией, которую нужно знать как print, in module, traceback и иные особенности языка. Вершина - это BaseException, который включает в себя все существующие типы исключений:</p>
94 <ul><li>SystemExit - выход через sys.exit;</li>
94 <ul><li>SystemExit - выход через sys.exit;</li>
95 <li>KeyboardInterrupt - прерывание пользователем;</li>
95 <li>KeyboardInterrupt - прерывание пользователем;</li>
96 <li>GeneratorExit - отображается при вызове методы close для generator;</li>
96 <li>GeneratorExit - отображается при вызове методы close для generator;</li>
97 <li>Exception - связь обычных несистемных исключений.</li>
97 <li>Exception - связь обычных несистемных исключений.</li>
98 </ul><p><a>Здесь</a>- таблица с исключениями несистемного плана в классе Exception.</p>
98 </ul><p><a>Здесь</a>- таблица с исключениями несистемного плана в классе Exception.</p>
99 <a></a>
99 <a></a>