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>