mirror of
https://github.com/libAthena/athena.git
synced 2025-12-13 15:16:15 +00:00
Reimplement Exceptions.
This commit is contained in:
@@ -41,7 +41,9 @@ public:
|
||||
*/
|
||||
inline IOException(const std::string& message, const std::string& file, const std::string& function, const int line) :
|
||||
Exception(message, file, function, line)
|
||||
{}
|
||||
{
|
||||
m_exceptionName = "IOException";
|
||||
}
|
||||
};
|
||||
|
||||
} // error
|
||||
@@ -50,14 +52,38 @@ public:
|
||||
#ifdef _MSC_VER
|
||||
#define THROW_IO_EXCEPTION(args, ...) \
|
||||
do { \
|
||||
if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, __VA_ARGS__); return; \
|
||||
} else {
|
||||
std::string msg = Athena::utility::sprintf(args, __VA_ARGS__); \
|
||||
throw Athena::error::IOException(std::string("IOException: ")+msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#elif defined(__GNUC__)
|
||||
#define THROW_IO_EXCEPTION(args...) \
|
||||
do { \
|
||||
std::string msg = Athena::utility::sprintf(args); \
|
||||
if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, args); return; \
|
||||
} else { std::string msg = Athena::utility::sprintf(args); \
|
||||
throw Athena::error::IOException(msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define THROW_IO_EXCEPTION_RETURN(ret, args, ...) \
|
||||
do { \
|
||||
if (atGetExceptionHandler()) {atGetExceptionHandler()(__FILE__, AT_PRETTY_FUNCTION, __LINE__, __VA_ARGS__); return ret; \
|
||||
} else {
|
||||
std::string msg = Athena::utility::sprintf(args, __VA_ARGS__); \
|
||||
throw Athena::error::IOException(std::string("IOException: ")+msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#elif defined(__GNUC__)
|
||||
#define THROW_IO_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::IOException(msg, __FILE__, AT_PRETTY_FUNCTION, __LINE__); \
|
||||
} \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user