Files

57 lines
1.3 KiB
C++

#pragma once
#include <exception>
#include <string>
namespace spdlogconfig {
// declaration section
/**
* Setup error with a textual description.
*
* This exception type is used to report configuration and initialization
* failures within the spdlog configuration module.
*/
class spdlogconfig_error : public std::exception {
public:
/**
* Construct an error from a C-string message.
*
* @param msg Error message to store.
* @throw std::bad_alloc If memory allocation for the message fails.
*/
spdlogconfig_error(const char *const msg);
/**
* Construct an error from a std::string message.
*
* @param msg Error message to store (moved into this object).
* @throw std::bad_alloc If memory allocation for the message fails.
*/
spdlogconfig_error(std::string msg);
/**
* Retrieve the stored error message.
*
* @return Null-terminated error message string.
*/
auto what() const noexcept -> const char * override;
private:
/** Stored error message text. */
std::string msg;
};
// implementation section
inline spdlogconfig_error::spdlogconfig_error(const char *const msg)
: msg(msg) {}
inline spdlogconfig_error::spdlogconfig_error(std::string msg)
: msg(std::move(msg)) {}
inline auto spdlogconfig_error::what() const noexcept -> const char * {
return msg.c_str();
}
} // namespace spdlogconfig