From 025999f216f0fe99d0eacd1f7a9c6276b834bcb8 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Fri, 17 Sep 2021 19:04:26 +0200 Subject: Removed WindowsException from public headers --- zencore/except.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'zencore/except.cpp') diff --git a/zencore/except.cpp b/zencore/except.cpp index 9bf043f4a..c06a26edd 100644 --- a/zencore/except.cpp +++ b/zencore/except.cpp @@ -7,6 +7,41 @@ namespace zen { #if ZEN_PLATFORM_WINDOWS +class WindowsException : public std::exception +{ +public: + WindowsException(std::string_view Message) + { + m_hResult = HRESULT_FROM_WIN32(GetLastError()); + m_Message = Message; + } + + WindowsException(HRESULT hRes, std::string_view Message) + { + m_hResult = hRes; + m_Message = Message; + } + + WindowsException(HRESULT hRes, const char* Message, const char* Detail) + { + m_hResult = hRes; + + ExtendableStringBuilder<128> msg; + msg.Append(Message); + msg.Append(" (detail: '"); + msg.Append(Detail); + msg.Append("')"); + + m_Message = msg.c_str(); + } + + virtual const char* what() const override { return m_Message.c_str(); } + +private: + std::string m_Message; + HRESULT m_hResult; +}; + void ThrowSystemException([[maybe_unused]] HRESULT hRes, [[maybe_unused]] std::string_view Message) { -- cgit v1.2.3 From a6244f914633a4245fc71a987cb42fce0b7d8671 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Fri, 17 Sep 2021 23:07:45 +0200 Subject: Added ThrowSystemError() helper --- zencore/except.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'zencore/except.cpp') diff --git a/zencore/except.cpp b/zencore/except.cpp index c06a26edd..44b8edffb 100644 --- a/zencore/except.cpp +++ b/zencore/except.cpp @@ -63,6 +63,12 @@ ThrowLastError(std::string_view Message) throw std::system_error(std::error_code(zen::GetLastError(), std::system_category()), std::string(Message)); } +void +ThrowSystemError(uint32_t ErrorCode, std::string_view Message) +{ + throw std::system_error(std::error_code(ErrorCode, std::system_category()), std::string(Message)); +} + std::string GetLastErrorAsString() { -- cgit v1.2.3