This is an automated email from the ASF dual-hosted git repository.

martinzink pushed a commit to branch minifi-api-property
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit cfacd92b01b6a9ac118c5c45a050f3eaea079cec
Author: Martin Zink <[email protected]>
AuthorDate: Fri Mar 14 10:18:30 2025 +0100

    orThrow, orTerminate formatter
---
 utils/include/utils/Error.h         | 10 ++++++++++
 utils/include/utils/OptionalUtils.h |  4 +++-
 utils/include/utils/expected.h      |  1 +
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/utils/include/utils/Error.h b/utils/include/utils/Error.h
index fc2139000..6d83e33d6 100644
--- a/utils/include/utils/Error.h
+++ b/utils/include/utils/Error.h
@@ -18,6 +18,16 @@
 #pragma once
 
 #include <system_error>
+#include "fmt/format.h"
+#include "fmt/std.h"
+
+template <>
+struct fmt::formatter<std::error_code> : fmt::formatter<std::string> {
+  auto format(const std::error_code& ec, fmt::format_context& ctx) const {
+    return fmt::formatter<std::string>::format(
+        fmt::format("{}: {} ({})", ec.category().name(), ec.message(), 
ec.value()), ctx);
+  }
+};
 
 namespace org::apache::nifi::minifi::utils {
 
diff --git a/utils/include/utils/OptionalUtils.h 
b/utils/include/utils/OptionalUtils.h
index 907990496..806a0eab7 100644
--- a/utils/include/utils/OptionalUtils.h
+++ b/utils/include/utils/OptionalUtils.h
@@ -28,6 +28,8 @@
 #include "utils/gsl.h"
 #include "utils/detail/MonadicOperationWrappers.h"
 #include "fmt/format.h"
+#include "utils/Error.h"  // for more readable std::error_code fmt::formatter
+
 
 namespace org::apache::nifi::minifi::utils {
 
@@ -141,7 +143,7 @@ T&& operator|(std::optional<T> object, const 
or_throw_wrapper e) {
   if (object) {
     return std::move(*object);
   }
-  throw std::runtime_error(e.reason);
+  throw std::runtime_error(fmt::format("{}: {}", e.reason, object.error()));
 }
 
 template<typename T>
diff --git a/utils/include/utils/expected.h b/utils/include/utils/expected.h
index b2d44949d..b489212d6 100644
--- a/utils/include/utils/expected.h
+++ b/utils/include/utils/expected.h
@@ -23,6 +23,7 @@
 #include "nonstd/expected.hpp"
 #include "utils/detail/MonadicOperationWrappers.h"
 #include "fmt/format.h"
+#include "utils/Error.h"  // for more readable std::error_code fmt::formatter
 
 namespace org::apache::nifi::minifi::utils {
 namespace detail {

Reply via email to