Итак, я пытаюсь написать простой базовый класс Exception для C ++, основанный на классе Java Exception.
Я уверен, что уже есть отличные библиотеки, но я делаю это для практики, а не для производственного кода, и мне любопытно, и я всегда хочу учиться Одна из вещей, которую делает Исключение Java, которую я хотел бы также реализовать, - это понятие «причина». В Java новое исключение с причиной выглядит так:
Exception cause = new Exception();
Exception newExcept = new Exception(cause);
Однако в C ++ передача исключения в качестве аргумента конструктору - это то, как вызывается конструктор копирования. Таким образом, существует концептуальное несоответствие между копированием исключения и созданием нового исключения с причиной. Это не проблема в Java, очевидно.
Полагаю, мне просто интересно, как лучше всего с этим справиться. У меня было несколько идей:
- Дифференцировать с фиктивной переменной
- Просто создайте новое исключение и вызовите метод setCause ()
- Что-то вроде конструктора копирования -
Exception(Exception &)
, а конструктор с причиной - Exception(Exception *)
Спасибо