aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-08 00:50:49 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-08 00:50:49 +0800
commitdf550874cd546a85074edc35bebeb3cd0530622b (patch)
tree3dc2c6a4986e2059b142beef942f7ac94729e473
parentdedc046844c7e4e7b53cdc6935fc896f64da2fe5 (diff)
downloadcru-df550874cd546a85074edc35bebeb3cd0530622b.tar.gz
cru-df550874cd546a85074edc35bebeb3cd0530622b.tar.bz2
cru-df550874cd546a85074edc35bebeb3cd0530622b.zip
Make inner exception shared.
-rw-r--r--include/cru/base/Exception.h13
-rw-r--r--src/base/Exception.cpp4
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<std::exception> inner = nullptr);
+ std::shared_ptr<std::exception> inner = nullptr);
explicit Exception(StringView message,
- std::unique_ptr<std::exception> inner = nullptr);
+ std::shared_ptr<std::exception> 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<std::string_view> additional_message) instead.")]]
+ [[deprecated(
+ "Use void AppendMessage(std::optional<std::string_view> "
+ "additional_message) instead.")]]
void AppendMessage(std::optional<StringView> additional_message);
private:
std::string message_;
- std::unique_ptr<std::exception> inner_;
+ std::shared_ptr<std::exception> 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<std::exception> inner)
+Exception::Exception(std::string message, std::shared_ptr<std::exception> inner)
: message_(std::move(message)), inner_(std::move(inner)) {}
-Exception::Exception(StringView message, std::unique_ptr<std::exception> inner)
+Exception::Exception(StringView message, std::shared_ptr<std::exception> inner)
: message_(message.ToUtf8()), inner_(std::move(inner)) {}
Exception::~Exception() {}