From df550874cd546a85074edc35bebeb3cd0530622b Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Mon, 8 Sep 2025 00:50:49 +0800 Subject: Make inner exception shared. --- include/cru/base/Exception.h | 13 ++++++++----- src/base/Exception.cpp | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/include/cru/base/Exception.h b/include/cru/base/Exception.h index 6f0727ce..f42406e0 100644 --- a/include/cru/base/Exception.h +++ b/include/cru/base/Exception.h @@ -12,9 +12,9 @@ namespace cru { class CRU_BASE_API Exception : public std::exception { public: explicit Exception(std::string message = "", - std::unique_ptr inner = nullptr); + std::shared_ptr inner = nullptr); explicit Exception(StringView message, - std::unique_ptr inner = nullptr); + std::shared_ptr inner = nullptr); ~Exception() override; @@ -37,14 +37,17 @@ class CRU_BASE_API Exception : public std::exception { [[deprecated("Use void SetMessage(std::string message) instead.")]] void SetMessage(StringView message); - [[deprecated("Use void AppendMessage(std::string_view additional_message) instead.")]] + [[deprecated( + "Use void AppendMessage(std::string_view additional_message) instead.")]] void AppendMessage(StringView additional_message); - [[deprecated("Use void AppendMessage(std::optional additional_message) instead.")]] + [[deprecated( + "Use void AppendMessage(std::optional " + "additional_message) instead.")]] void AppendMessage(std::optional additional_message); private: std::string message_; - std::unique_ptr inner_; + std::shared_ptr inner_; }; class CRU_BASE_API PlatformException : public Exception { diff --git a/src/base/Exception.cpp b/src/base/Exception.cpp index a92b6953..1f03c2ba 100644 --- a/src/base/Exception.cpp +++ b/src/base/Exception.cpp @@ -7,10 +7,10 @@ constexpr auto NO_MESSAGE = "No message."; namespace cru { -Exception::Exception(std::string message, std::unique_ptr inner) +Exception::Exception(std::string message, std::shared_ptr inner) : message_(std::move(message)), inner_(std::move(inner)) {} -Exception::Exception(StringView message, std::unique_ptr inner) +Exception::Exception(StringView message, std::shared_ptr inner) : message_(message.ToUtf8()), inner_(std::move(inner)) {} Exception::~Exception() {} -- cgit v1.2.3