Сообщения об ошибках Python

Программист и ошибки так же неразлучны, как яблоко и ёжик. Ошибки бывают разных видов, и я об этом уже не раз рассказывал (например, здесь). В компиляторах ошибки синтаксиса обнаруживаются самим компилятором, и программа просто не запускается. В интерпретаторах с этим хуже, поскольку интерпретатор, конечно, найдёт ошибку синтаксиса, но в этом случае, возможно, вам придётся переписывать весь код, а не только строку с ошибкой.

Что касается ошибок времени выполнения, то здесь всё обнаруживается только во время выполнения программы. Особенно неприятно, когда ввёл кучу данных и только потом обнаружилось, что в них ошибка. Ну да ладно. Это всё лирика. Пора привести пример. Сделаю это в IDLE Python.

Программист и ошибки так же неразлучны, как яблоко и ёжик. Ошибки бывают разных видов, и я об этом уже не раз рассказывал (например, здесь).

Здесь нет синтаксической ошибки, но есть ошибка логическая. А дело в том, что в третьей строке кода вместо вещественного деления мы выполнили операцию целочисленного деления. И в переменной z вместо числа 0,9 оказалось число 0. Затем мы попытались разделить число 100 на значение из переменной z, а поскольку там 0, то и произошла ошибка времени выполнения.

Причём нам сообщили, что ошибка в строке 1. Хотя на самом деле истинная ошибка даже не в последней строке, где выполняется деление на 0, а в строке № 3, где мы использовали не ту операцию деления, какую надо. И хотя во время выполнения действительно произошло деление на 0 и нам об этом совершенно правильно сообщили, причину этого надо искать в предыдущем коде.

Так что на номера строк в сообщениях об ошибках, конечно, надо смотреть (нередко они бывают правильными), но при этом надо помнить, что сообщения об ошибках далеко не всегда дают точные сведения о месте нахождения ошибки в коде и о причинах её возникновения. В то же время наиболее полезная информация в сообщениях об ошибках как раз и содержит: 1) вид ошибки; 2) место возникновения.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.