Необходимо взять за основу проект exceptions (./solutions/base-version) и реализовать в нём обработку ошибок с помощью исключений. Модифицировать можно только следующие файлы: tests.cpp, div.h, MyException.h, MyException.cpp. В проект можно добавлять новые файлы.
Результатом работы программы должен быть файл с логом исключений и вывод, осуществлённый программой в консоль. Программа считается сданной, если Pull request в upstream репозиторий в ветку solutions одобрен.
- Выполнить fork.
- Скопировать ./solutions/base-version в ./solutions/<ФИО>.
- Реализовать задачу.
- Сделать Pull request в upstream репозиторий (https://help.github.com/articles/configuring-a-remote-for-a-fork/) в ветку solutions.
- Необходимо реализовать базовый класс исключений и унаследовать от него исключения для всех ошибочных ситуаций. В базовом классе необходимо добавить текстовое поле, которое будет хранить дополнительную информацию об ошибке: название и параметры функции, в которой произошла исключительная ситуация.
- Метод WriteLog должен выводить на экран следующую информацию для всей последовательности исключений, хранящейся в объекте:
- Тип исключительной ситуации.
- Название и параметры функции, в которой произошла исключительная ситуация.
- Исключения, инициируемые функциями Test*, являются критическими. Исключения, возникающие во всех остальных функциях, могут быть критическими и должны обрабатываться в зависимости от ситуации.
- Если исключение является критическими, то его обработчик должен генерировать новое исключение (инициирующее его исключение должно сохраниться в полях вновь созданного).
- Если исключение не является критическим, то программа должна его обработать и продолжить выполнение работы.
- Если оператор new не может выделить требуемый объем памяти, то он инициирует исключение (http://www.cplusplus.com/reference/new/bad_alloc/).
- Пример вывода программы можно посмотреть в файле sample_output.txt.