Shanraq.org Shanraq.org
Ошибка как наблюдаемый факт
Общество

Информатика: создаём своего цифрового помощника Урок 36 из 38

Ошибка как наблюдаемый факт

Научимся читать ошибку как свидетельство и не терять задачи при неверном вводе.

Где мы на карте

Это урок 36 из 72 и часть блока Python (уроки 27–38). Опорная схема показывает проверяемые переходы. Продолжаем бумажный договор версии 0.3: пять исходов напоминания и исходные вымышленные задачи.

Ошибка как наблюдаемый факт

Ситуация и вопрос

Друг ввёл срок 2026-02-29. Помощник не должен молча превратить его в 1 марта или стереть файл. Что именно сломалось: ввод, правило даты или сохранение? Найдём первый шаг расхождения.

Новые слова без пропусков

Исключение — сигнал Python о невозможности выполнить действие по обычному пути. ValueError сообщает о недопустимом значении, а FileNotFoundError — об отсутствии файла. Трассировка ошибки показывает цепочку вызовов и строку сбоя; читать её начинают с последней строки и сверяют с исходным кодом. try содержит рискованную операцию; except ValueError перехватывает только ожидаемую ошибку значения. Отладка — поиск причины по наблюдениям и проверка исправления. Инвариант данных здесь таков: ошибка до записи не меняет сохранённые задачи. Общий except: скрывает программные дефекты и потому не подходит.

Опорный сигнал

Вход → проверка правила → изменение состояния → наблюдаемый результат. Покажите пальцем, на каком шаге программа читает данные, где сравнивает их с договором и где только сообщает результат. Если шага не видно на схеме, найдите его в коде и добавьте в собственную трассу.

Разбираем шаг за шагом

Сначала запишите ожидаемое: неверная дата должна дать INVALID DATE, а старый файл остаться побайтно тем же. Запустите пример, прочтите ветку except ValueError. Затем в копии файла поменяйте одну букву в JSON: это уже ошибка разбора JSONDecodeError, её не следует путать с неверной датой. В assistant_core сначала проверяются весь документ и дата, и только затем создаётся изменённая копия для сохранения. Сравните хеш файла до и после неудачного add.

Предскажите и проверьте

Закройте блок с выводом. По строкам проследите значения имён и напишите точный ожидаемый текст, включая регистр и порядок строк. Только затем выполните код из каталога step-03 командой python3 и сравните посимвольно. Поменяйте один вход; до запуска запишите новый прогноз. Если результат отличается, найдите первую строку расхождения, а не подгоняйте ответ задним числом.

from assistant_core import parse_date
try:
    parse_date("2026-02-29")
except ValueError:
    print("INVALID DATE")

Ожидаемый вывод

INVALID DATE

Поймайте ошибку

except Exception: pass делает вид, что всё прошло хорошо. Если файл не прочитан, показывать пустой список как будто задач нет — ложь. Разделяйте «нет файла», «неверный JSON» и «нет задач»; показывайте точную причину без выдачи вымышленных данных.

Изменение проекта

assistant.py отдаёт понятные сообщения для ожидаемых ошибок и ненулевой код завершения; assistant_core.py не записывает непроверенный документ. Зафиксируйте неудачные случаи как тесты, чтобы очередное улучшение не превратило ошибку в потерю данных.

Задание и доказательство

На копии tasks.json испытайте: недопустимую дату, повторный id, сломанный JSON и отсутствующий файл. Для каждого случая запишите ожидаемую ошибку, реальное сообщение и изменился ли файл. Исправьте одну ошибку и повторите прежний успешный сценарий: новый путь не должен ломать старый.

Перенос в новую ситуацию

Школьный журнал не открывается: пароль неверен или сеть отключена. Почему сообщение «в журнале ноль оценок» было бы опасным? Предложите два разных сообщения и укажите, какие данные нельзя менять при каждом сбое.

Возврат через 1, 7 и 30 дней

Через 1 день восстановите правило и один граничный пример без страницы. Через 7 дней объясните ошибку в новом примере однокласснику. Через 30 дней повторите тест проекта, проверьте, что прежние записи и вывод сохранились, и снова перенесите правило на другую задачу.

Следующий урок

Далее: Тесты и модули защищают изменения

Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом

Проверить доказательство проекта

Запишите наблюдение, объяснение, исправление ошибки и изменение своего проекта. Модель укажет первую перепутанную или недоказанную связь, но не даст готовый ответ.

Чтобы проверить, нужно войти. Войти

Комментарии (0)

Пока нет комментариев. Будьте первым.