Когда программа ведёт себя неожиданно, хочется сразу переписать большой фрагмент. Полезнее сначала собрать воспроизводимый пример и проверить предположения.

Разбираемся в теме

Ошибка может возникать на границе входных данных, в состоянии программы, в порядке операций или в неверном ожидании результата. Логи и маленькие проверки помогают сузить место поиска.

Практический шаг

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

Продолжим обсуждение

Как разбирать ошибку в программе по наблюдаемому поведению?