Объяснение
with закрывает файл и при исключении. JSON хранит ограниченный набор типов и требует проверки структуры после чтения. Ловите ожидаемые ошибки, чтобы не скрывать дефект программы. Для замены файла используйте временный файл в том же каталоге.
Задача для самостоятельного решения
Почему except Exception: return [] может привести к потере задач?
Показать разбор ответа
Любая ошибка будет принята за пустую базу, которую следующая запись сохранит поверх данных. Различайте отсутствующий файл, повреждённый JSON и программную ошибку.