mirror of
https://github.com/libAthena/athena.git
synced 2025-12-10 14:07:44 +00:00
Reimplement Exceptions.
This commit is contained in:
@@ -36,8 +36,9 @@ class InvalidDataException : public Exception
|
||||
{
|
||||
public:
|
||||
inline InvalidDataException(const std::string& error, const std::string& file, const std::string& function, const int line)
|
||||
: Exception(error, file, function, line)
|
||||
: Exception(("InvalidDataException") + error, file, function, line)
|
||||
{
|
||||
m_exceptionName = "InvalidDataException";
|
||||
}
|
||||
};
|
||||
} // error
|
||||
@@ -46,14 +47,34 @@ public:
|
||||
#ifdef _MSC_VER
|
||||
#define THROW_INVALID_DATA_EXCEPTION(args, ...) \
|
||||
do { \
|
||||
std::string msg = Athena::utility::sprintf(args, __VA_ARGS__); \
|
||||
throw Athena::error::InvalidDataException(std::string("InvalidDataException: ")+msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, __VA_ARGS__); return; } \
|
||||
else { std::string msg = Athena::utility::sprintf(args, __VA_ARGS__); \
|
||||
throw Athena::error::InvalidDataException(msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#elif defined(__GNUC__)
|
||||
#define THROW_INVALID_DATA_EXCEPTION(args...) \
|
||||
do { if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, args); return; } \
|
||||
else { std::string msg = Athena::utility::sprintf(args); \
|
||||
throw Athena::error::InvalidDataException(msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define THROW_INVALID_DATA_EXCEPTION(args, ...) \
|
||||
do { \
|
||||
std::string msg = Athena::utility::sprintf(args); \
|
||||
throw Athena::error::InvalidDataException(std::string("InvalidDataException: ")+msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, __VA_ARGS__); return; } \
|
||||
else { std::string msg = Athena::utility::sprintf(args, __VA_ARGS__); \
|
||||
throw Athena::error::InvalidDataException(msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#elif defined(__GNUC__)
|
||||
#define THROW_INVALID_DATA_EXCEPTION_RETURN(ret, args...) \
|
||||
do { if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, args); return ret; } \
|
||||
else { std::string msg = Athena::utility::sprintf(args); \
|
||||
throw Athena::error::InvalidDataException(msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#endif
|
||||
#endif // INVALIDDATAEXCEPTION_HPP
|
||||
|
||||
Reference in New Issue
Block a user