aboutsummaryrefslogtreecommitdiff
path: root/src/exception.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2018-09-25 13:08:40 +0800
committercrupest <crupest@outlook.com>2018-09-25 13:08:40 +0800
commit4b86554a0354d78efeb40e551eaccaac0fecd1d1 (patch)
treec8a73d848401f523ff91fe8ed1b0887aa88bbfb8 /src/exception.cpp
parentcea138417c54d6cf8043b6334c22e3af957d26f8 (diff)
downloadcru-4b86554a0354d78efeb40e551eaccaac0fecd1d1.tar.gz
cru-4b86554a0354d78efeb40e551eaccaac0fecd1d1.tar.bz2
cru-4b86554a0354d78efeb40e551eaccaac0fecd1d1.zip
Change the structure of project.
Diffstat (limited to 'src/exception.cpp')
-rw-r--r--src/exception.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/exception.cpp b/src/exception.cpp
new file mode 100644
index 00000000..a1d59ceb
--- /dev/null
+++ b/src/exception.cpp
@@ -0,0 +1,34 @@
+#include "exception.h"
+
+#include <fmt/format.h>
+
+namespace cru
+{
+ inline std::string HResultMakeMessage(HRESULT h_result, std::optional<std::string> message)
+ {
+ if (message.has_value())
+ return fmt::format("An HResultError is thrown. HRESULT: {:#08x}.\nAdditional message: {}\n", h_result, message.value());
+ else
+ return fmt::format("An HResultError is thrown. HRESULT: {:#08x}.\n", h_result);
+ }
+
+ HResultError::HResultError(HRESULT h_result, std::optional<std::string_view> additional_message)
+ : runtime_error(HResultMakeMessage(h_result, std::nullopt)), h_result_(h_result)
+ {
+
+ }
+
+ inline std::string Win32MakeMessage(DWORD error_code, std::optional<std::string> message)
+ {
+ if (message.has_value())
+ return fmt::format("Last error code: {:#04x}.\nAdditional message: {}\n", error_code, message.value());
+ else
+ return fmt::format("Last error code: {:#04x}.\n", error_code);
+ }
+
+ Win32Error::Win32Error(DWORD error_code, std::optional<std::string_view> additional_message)
+ : runtime_error(Win32MakeMessage(error_code, std::nullopt)), error_code_(error_code)
+ {
+
+ }
+}