Merge pull request #533 from manuel-schiller/patch-1

rethrow unwind exception
This commit is contained in:
Gabi Melman 2017-10-25 12:57:40 +03:00 committed by GitHub
commit fbb8244f7d
2 changed files with 11 additions and 4 deletions

View File

@ -42,6 +42,12 @@
#define SPDLOG_DEPRECATED
#endif
#ifdef __linux__
#include <cxxabi.h>
#define SPDLOG_CATCH_ALL catch (abi::__forced_unwind&) { _err_handler("Unknown exception"); throw; } catch (...)
#else // __linux__
#define SPDLOG_CATCH_ALL catch (...)
#endif // __linux__
#include "spdlog/fmt/fmt.h"

View File

@ -11,7 +11,6 @@
#include <memory>
#include <string>
// create logger with given name, sinks and the default pattern formatter
// all other ctors will call this one
template<class It>
@ -78,7 +77,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const char* fmt, const Ar
{
_err_handler(ex.what());
}
catch (...)
SPDLOG_CATCH_ALL
{
_err_handler("Unknown exception");
}
@ -98,7 +97,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const char* msg)
{
_err_handler(ex.what());
}
catch (...)
SPDLOG_CATCH_ALL
{
_err_handler("Unknown exception");
}
@ -119,7 +118,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const T& msg)
{
_err_handler(ex.what());
}
catch (...)
SPDLOG_CATCH_ALL
{
_err_handler("Unknown exception");
}
@ -571,3 +570,5 @@ inline const std::vector<spdlog::sink_ptr>& spdlog::logger::sinks() const
{
return _sinks;
}
#undef SPDLOG_CATCH_ALL