[ox/std] Add implementation of what() to ox::Exception
This commit is contained in:
parent
853f8c25ea
commit
160ef61520
27
deps/ox/src/ox/std/error.hpp
vendored
27
deps/ox/src/ox/std/error.hpp
vendored
@ -12,7 +12,15 @@
|
||||
#include <exception>
|
||||
#else
|
||||
namespace std {
|
||||
class exception {};
|
||||
class exception {
|
||||
public:
|
||||
virtual ~exception() = default;
|
||||
|
||||
[[nodiscard]]
|
||||
virtual const char *what() const noexcept {
|
||||
return "";
|
||||
}
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -22,6 +30,7 @@ class exception {};
|
||||
#include "utility.hpp"
|
||||
|
||||
#define OxError(...) ox::Error(__FILE__, __LINE__, __VA_ARGS__)
|
||||
#define OxException(...) ox::Error(__FILE__, __LINE__, __VA_ARGS__)
|
||||
|
||||
namespace ox {
|
||||
|
||||
@ -71,12 +80,28 @@ struct Exception: public std::exception {
|
||||
uint16_t line = 0;
|
||||
ErrorCode errCode = 0;
|
||||
|
||||
explicit inline Exception(const char *file, uint32_t line, ErrorCode errCode, const char *msg = nullptr) noexcept {
|
||||
this->file = file;
|
||||
this->line = line;
|
||||
this->msg = msg;
|
||||
this->errCode = errCode;
|
||||
}
|
||||
|
||||
inline explicit Exception(const Error &err) {
|
||||
this->msg = err.msg;
|
||||
this->file = err.file;
|
||||
this->line = err.line;
|
||||
this->errCode = err.errCode;
|
||||
}
|
||||
|
||||
constexpr Error toError() const noexcept {
|
||||
return Error(file, line, errCode, msg);
|
||||
}
|
||||
|
||||
[[nodiscard]]
|
||||
const char *what() const noexcept override {
|
||||
return msg;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
|
Loading…
Reference in New Issue
Block a user