Browse Source

util: Throw tinyformat::format_error on formatting error

Throw tinyformat::format_error on formatting error instead of the
`std::runtime_error`.
tags/v0.15.1
Wladimir J. van der Laan 4 years ago
parent
commit
b651270cd6
2 changed files with 9 additions and 2 deletions
  1. 8
    1
      src/tinyformat.h
  2. 1
    1
      src/util.h

+ 8
- 1
src/tinyformat.h View File

@@ -123,7 +123,7 @@ namespace tinyformat {}
namespace tfm = tinyformat;

// Error handling; calls assert() by default.
#define TINYFORMAT_ERROR(reasonString) throw std::runtime_error(reasonString)
#define TINYFORMAT_ERROR(reasonString) throw tinyformat::format_error(reasonString)

// Define for C++11 variadic templates which make the code shorter & more
// general. If you don't define this, C++11 support is autodetected below.
@@ -164,6 +164,13 @@ namespace tfm = tinyformat;

namespace tinyformat {

class format_error: public std::runtime_error
{
public:
format_error(const std::string &what): std::runtime_error(what) {
}
};

//------------------------------------------------------------------------------
namespace detail {


+ 1
- 1
src/util.h View File

@@ -80,7 +80,7 @@ template<typename... Args> std::string FormatStringFromLogArgs(const char *fmt,
std::string _log_msg_; /* Unlikely name to avoid shadowing variables */ \
try { \
_log_msg_ = tfm::format(__VA_ARGS__); \
} catch (std::runtime_error &e) { \
} catch (tinyformat::format_error &e) { \
/* Original format string will have newline so don't add one here */ \
_log_msg_ = "Error \"" + std::string(e.what()) + "\" while formatting log message: " + FormatStringFromLogArgs(__VA_ARGS__); \
} \

Loading…
Cancel
Save