util/Exception: move code to AppendNestedMessage()
This commit is contained in:
parent
ba09e22c30
commit
8679074be7
@ -29,18 +29,32 @@
|
||||
|
||||
#include "Exception.hxx"
|
||||
|
||||
template<typename T>
|
||||
static void
|
||||
AppendNestedMessage(std::string &result, T &&e,
|
||||
const char *fallback, const char *separator) noexcept
|
||||
{
|
||||
try {
|
||||
std::rethrow_if_nested(std::forward<T>(e));
|
||||
} catch (const std::exception &nested) {
|
||||
result += separator;
|
||||
result += nested.what();
|
||||
AppendNestedMessage(result, nested, fallback, separator);
|
||||
} catch (const std::nested_exception &ne) {
|
||||
AppendNestedMessage(result, ne, fallback, separator);
|
||||
} catch (...) {
|
||||
result += separator;
|
||||
result += fallback;
|
||||
}
|
||||
}
|
||||
|
||||
std::string
|
||||
GetFullMessage(const std::exception &e,
|
||||
const char *fallback, const char *separator) noexcept
|
||||
{
|
||||
try {
|
||||
std::rethrow_if_nested(e);
|
||||
return e.what();
|
||||
} catch (...) {
|
||||
return std::string(e.what()) + separator +
|
||||
GetFullMessage(std::current_exception(),
|
||||
fallback, separator);
|
||||
}
|
||||
std::string result = e.what();
|
||||
AppendNestedMessage(result, e, fallback, separator);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string
|
||||
@ -53,7 +67,7 @@ GetFullMessage(std::exception_ptr ep,
|
||||
return GetFullMessage(e, fallback, separator);
|
||||
} catch (const std::nested_exception &ne) {
|
||||
return GetFullMessage(ne.nested_ptr(), fallback, separator);
|
||||
} catch (...) {
|
||||
return fallback;
|
||||
}
|
||||
|
||||
return fallback;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user