Найти в Дзене
Журнал разработчика

Запись 30. Ошибки

Если вы не делаете ошибок, вы решаете слишком простые задачи, и это самая большая ошибка. (Фрэнк Вильчек) Так уж заведено, что без ошибок никак не обойтись. Тем более если речь идёт об изучении чего-то нового, и вдвойне, если это новое – программирование. В этом деле ошибки – часть профессии. Пишешь код, получаешь сообщения об ошибках, исправляешь их. И в этом нелёгком деле Python сам же придёт на помощь. Python сообщит об ошибке специальным сообщением – Traceback, которое имя файла, номер строки, тип ошибки и её описание, а также укажет непосредственно на место в коде. Взглянем же на него: В примере выше код содержит всего одну строку и должен вывести значение переменной "a". Но вот незадача, переменная с таким именем не существует. Ошибка? Несомненно! Python через трейсбек вывел всю необходимую информацию об этой ошибке. Это ошибка имени – NameError. Рассмотрим ещё пару типов. Тут попытка сложить число и строку, которая, естественно, потерпела крах. Это ошибка типа данных - TypeError

Если вы не делаете ошибок, вы решаете слишком простые задачи, и это самая большая ошибка. (Фрэнк Вильчек)

Так уж заведено, что без ошибок никак не обойтись. Тем более если речь идёт об изучении чего-то нового, и вдвойне, если это новое – программирование. В этом деле ошибки – часть профессии. Пишешь код, получаешь сообщения об ошибках, исправляешь их. И в этом нелёгком деле Python сам же придёт на помощь.

Python сообщит об ошибке специальным сообщением – Traceback, которое имя файла, номер строки, тип ошибки и её описание, а также укажет непосредственно на место в коде. Взглянем же на него:

Трейсбек на английском, но понять его не мудрено
Трейсбек на английском, но понять его не мудрено

В примере выше код содержит всего одну строку и должен вывести значение переменной "a". Но вот незадача, переменная с таким именем не существует. Ошибка? Несомненно!

Python через трейсбек вывел всю необходимую информацию об этой ошибке. Это ошибка имени – NameError.

Рассмотрим ещё пару типов.

-2

Тут попытка сложить число и строку, которая, естественно, потерпела крах. Это ошибка типа данных - TypeError. Возникает в тех случаях когда в операции участвует неподходящий тип. В данном примере не получается сложить данные типа "int" и "str". Это как складывать метры и килограммы, не получится.

Рассмотрим ещё один пример ошибки:

-3

Ошибка синтаксиса – SyntaxError. Да да, в языке программирования тоже есть необходимость соблюдать правила синтаксиса. В данном примере к ошибке привёл забытый апостроф в конце строки. В жизни забытый знак препинания лишь укажет на "грамотность" автора. В программировании такое не прокатит. Ошибка приводит к остановке выполнения программы.

Сейчас немного противоречия. Ошибка не всегда приводит к остановке программы. Посмотри на следующий пример:

-4

Программа отработала без ошибок, но результат не тот, который хотелось бы получить. Разберись самостоятельно и напиши в комментарии что тут не так.

Конечно это далеко не вся информация об ошибках и трейсбеках, но для начала достаточно. Будешь практиковаться, узнаешь много нового и интересного об ошибках.

Ну и напоследок немного познавательной информации. Ошибки называют "багами", от английского слова bug - жук. И это не просто так. В 1947 году инженеры, работавшие с компьютером Mark II, обнаружили сгоревшего мотылька в повреждённом компоненте. Мотылёк стал причиной замыкания. Его извлекли и вклеили в журнал с пометкой: "First actual case of bug being found".

Фрагмент того самого журнала
Фрагмент того самого журнала