11 #include <hilti/rt/backtrace.h> 12 #include <hilti/rt/extension-points.h> 13 #include <hilti/rt/fmt.h> 34 Exception() : std::runtime_error(
"<no error>"){};
55 auto backtrace()
const {
return _backtrace.backtrace(); }
58 Exception(
const std::string& what, std::string_view desc, std::string_view location);
60 std::string _description;
61 std::string _location;
65 #define HILTI_EXCEPTION(name, base) \ 66 class name : public ::hilti::rt::base { \ 68 using ::hilti::rt::base::base; \ 72 #define HILTI_EXCEPTION_NS(name, ns, base) \ 73 class name : public ns::base { \ 75 using ns::base::base; \ 79 #define HILTI_EXCEPTION_IMPL(name) name::name::~name() = default; 171 FormattingError(std::string desc) : RuntimeError(_sanitize(std::move(desc))) {}
174 std::string _sanitize(std::string desc) {
175 if (
auto pos = desc.find(
"tinyformat: "); pos != std::string::npos )
192 using std::runtime_error::runtime_error;
201 namespace exception {
219 void printUncaught(
const Exception& e, std::ostream& out);
222 namespace detail::adl {
223 inline std::string
to_string(
const Exception& e, adl::tag ) {
return fmt(
"<exception: %s>", e.what()); }
auto backtrace() const
Definition: exception.h:55
std::string to_string(T &&x)
Definition: extension-points.h:26
Definition: exception.h:190
auto description() const
Definition: exception.h:46
Definition: backtrace.h:14
auto location() const
Definition: exception.h:49
Definition: exception.h:21
Definition: exception.h:204
Definition: location.h:86
std::string fmt(const char *fmt, const Args &... args)
Definition: fmt.h:13
HILTI_EXCEPTION(InvalidArgument, RuntimeError)