0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-12-26 15:33:54 +01:00

ircd::util: Split what(); use default param of std::current_exception().

This commit is contained in:
Jason Volk 2018-05-07 18:36:27 -07:00
parent 907efca5d8
commit 63d77c2392
2 changed files with 38 additions and 20 deletions

View file

@ -48,6 +48,7 @@ namespace ircd
#include "pointers.h"
#include "iterator.h"
#include "nothrow.h"
#include "what.h"
// Unsorted section
namespace ircd {
@ -220,25 +221,5 @@ is_powerof2(const long long v)
return v && !(v & (v - 1LL));
}
/// Get what() from exception_ptr
///
inline ircd::string_view
what(const std::exception_ptr &eptr)
try
{
if(likely(eptr))
std::rethrow_exception(eptr);
return {};
}
catch(const std::exception &e)
{
return e.what();
}
catch(...)
{
return {};
}
} // namespace util
} // namespace ircd

37
include/ircd/util/what.h Normal file
View file

@ -0,0 +1,37 @@
// Matrix Construct
//
// Copyright (C) Matrix Construct Developers, Authors & Contributors
// Copyright (C) 2016-2018 Jason Volk <jason@zemos.net>
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice is present in all copies. The
// full license for this software is available in the LICENSE file.
#pragma once
#define HAVE_IRCD_UTIL_WHAT_H
namespace ircd::util
{
string_view what(const std::exception_ptr eptr = std::current_exception()) noexcept;
}
/// Get what() from exception_ptr
///
inline ircd::string_view
ircd::util::what(const std::exception_ptr eptr)
noexcept try
{
if(likely(eptr))
std::rethrow_exception(eptr);
return {};
}
catch(const std::exception &e)
{
return e.what();
}
catch(...)
{
return {};
}