/exceptions

Exceptions exercise (C++)

Primary LanguageC

Исключения (C++)

Постановка задачи

Необходимо взять за основу проект exceptions (./solutions/base-version) и реализовать в нём обработку ошибок с помощью исключений. Модифицировать можно только следующие файлы: tests.cpp, div.h, MyException.h, MyException.cpp. В проект можно добавлять новые файлы.

Результатом работы программы должен быть файл с логом исключений и вывод, осуществлённый программой в консоль. Программа считается сданной, если Pull request в upstream репозиторий в ветку solutions одобрен.

Этапы выполнения

  1. Выполнить fork.
  2. Скопировать ./solutions/base-version в ./solutions/<ФИО>.
  3. Реализовать задачу.
  4. Сделать Pull request в upstream репозиторий (https://help.github.com/articles/configuring-a-remote-for-a-fork/) в ветку solutions.

Требования

  1. Необходимо реализовать базовый класс исключений и унаследовать от него исключения для всех ошибочных ситуаций. В базовом классе необходимо добавить текстовое поле, которое будет хранить дополнительную информацию об ошибке: название и параметры функции, в которой произошла исключительная ситуация.
  2. Метод WriteLog должен выводить на экран следующую информацию для всей последовательности исключений, хранящейся в объекте:
  • Тип исключительной ситуации.
  • Название и параметры функции, в которой произошла исключительная ситуация.
  1. Исключения, инициируемые функциями Test*, являются критическими. Исключения, возникающие во всех остальных функциях, могут быть критическими и должны обрабатываться в зависимости от ситуации.
  2. Если исключение является критическими, то его обработчик должен генерировать новое исключение (инициирующее его исключение должно сохраниться в полях вновь созданного).
  3. Если исключение не является критическим, то программа должна его обработать и продолжить выполнение работы.

Замечания

  1. Если оператор new не может выделить требуемый объем памяти, то он инициирует исключение (http://www.cplusplus.com/reference/new/bad_alloc/).
  2. Пример вывода программы можно посмотреть в файле sample_output.txt.