Простое приложение командной строки для ведения списка задач, которое ведет все задачи в файле todo.txt (в папке с приложением).
У приложения есть 3 команды:
- add - добавить задачу указав название и дату
- all - вывести все задачи
- today - вывесть задачи на сегодня
Все функции уже написаны. И приложение уже даже работает. Но к сожалению, приложение работает только с правильными данными и падает при малейших нештатных ситуациях. В связи с этим надо переделать приложение, используя блок-схему для обработки и выбрасывания исключений: https://miro.com/app/board/o9J_l_DKWkw=/
Давайте сделаем ToDoTask в контрактном стиле. Этот класс не взаимодействует напрямую с пользователем.
Любые переданные на вход в конструктор ToDoTask неправильные данные - исключительная ситуация. Ограничения на данные у него такие:
- Date в диапазоне между 2000/01/01 и 2100/01/01.
- Name не пустой.
У него есть метод Parse, который парсит входную строку типа "{Date} {Name}" и создает новый объект ToDoTask.
Также у него есть безопасная версия TryParse, которая в отличие от Parse не кидает исключение, а возвращает false, если строка невалидная.
Совет: При выбрасывании исключений старайтесь передавать понятный текст ошибки.
Если файл не найден при добавлении новой задачи, пользователю предлагается сначала создать новый и добавить задачу в него.
Если файл не найден при выводе задач (today, all), то выводиться сообщение: "Файла с задачами пока нет, сначала создайте задачу".
Если при выводе задач, какие-то строки из файла не получилось спарсить, то эти строки выводятся вначале с предупредительным сообщением, а лишь потом все валидные задачи.
Все необработанные исключения пойманные в глобальном обработчике пишуться в log.txt.
Команда add принимает на вход название 2-м аргументом и дату 3-м аргументом. Если аргументы невалидные, то выводиться соответствующее сообщение.
Приложение проверяет количество аргументов для конкретной команды.
Если была передана неверная команда, то пользователю выводится соответствующее сообщение.