00001
00011
00012
00013 #ifndef EXCEPTION_H_
00014 #define EXCEPTION_H_
00015
00016 #include "../global/global_definitions.h"
00017
00018 #include <exception>
00019 #include <string>
00020
00021 namespace imedgine
00022 {
00023
00026
00027
00040
00041
00042 class Exception : public std::exception
00043 {
00044 public:
00045
00046
00051
00052 Exception(exception_type type, std::string detail = "");
00053
00054
00057
00058 Exception(Exception const& src);
00059
00060
00063
00064 virtual ~Exception() throw();
00065
00066
00070
00071 virtual char const* what() const throw();
00072
00073
00074
00078
00079 exception_type getType() const;
00080
00081
00082
00086
00087 std::string const& getDetail() const;
00088
00089 protected:
00090
00091 exception_type type_;
00092
00093 std::string detail_;
00094
00095 private:
00096
00097 Exception& operator = (Exception const&)
00098 { return(*this); }
00099 };
00100
00101 }
00102
00103 #endif //EXCEPTION_H_