Exception.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef ADCHPP_EXCEPTION_H
00020 #define ADCHPP_EXCEPTION_H
00021
00022 #include "common.h"
00023
00024 namespace adchpp {
00025
00026 class ADCHPP_VISIBLE Exception : public std::exception
00027 {
00028 public:
00029 Exception() { }
00030 Exception(const std::string& aError) throw() : error(aError) { dcdebug("Thrown: %s\n", error.c_str()); }
00031 virtual ~Exception() throw() { }
00032 const std::string& getError() const throw() { return error; }
00033
00034 virtual const char* what() { return error.c_str(); }
00035 protected:
00036 std::string error;
00037 };
00038
00039 #ifndef NDEBUG
00040
00041 #define STANDARD_EXCEPTION(name) class ADCHPP_VISIBLE name : public Exception { \
00042 public:\
00043 name() throw() : Exception(#name) { } \
00044 name(const std::string& aError) throw() : Exception(#name ": " + aError) { } \
00045 virtual ~name() throw() { } \
00046 }
00047
00048 #else // NDEBUG
00049
00050 #define STANDARD_EXCEPTION(name) class ADCHPP_VISIBLE name : public Exception { \
00051 public:\
00052 name() throw() : Exception() { } \
00053 name(const std::string& aError) throw() : Exception(aError) { } \
00054 virtual ~name() throw() { } \
00055 }
00056 #endif
00057
00058 }
00059
00060 #endif // EXCEPTION_H