00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef TECPLOT_TOOLBOX_EXCEPTION_H
00012 #define TECPLOT_TOOLBOX_EXCEPTION_H
00013
00014 #if defined MSWIN
00015 #pragma once
00016 #endif
00017
00018 #include <exception>
00019 #include <string>
00020 #include "tptoolbox.h"
00021
00022 namespace tecplot
00023 {
00024 namespace toolbox
00025 {
00026
00027 #define ThrowException(exception, what) \
00028 { \
00029 throw exception(what, std::string(__FILE__), __LINE__); \
00030 }
00031
00032
00033
00037 class TPTOOLBOX_DLLAPI Exception : public virtual std::exception
00038 {
00039 public:
00042 Exception();
00043
00046 Exception(const std::string& what);
00047
00050 Exception(const std::string& what,
00051 const std::string& fileName,
00052 int lineNum);
00053
00056 Exception(const Exception& other);
00057
00060 virtual ~Exception() throw();
00061
00064 virtual const char * what() const throw();
00065
00068 virtual const char * fileName() const throw();
00069
00072 virtual int lineNum() const throw();
00073
00074 private:
00075 const std::string m_what;
00076 const std::string m_fileName;
00077 const int m_lineNum;
00078
00079
00080
00081
00082
00083 Exception& operator = (const Exception& other);
00084 };
00085
00086 }
00087 }
00088
00089 #endif // TECPLOT_TOOLBOX_EXCEPTION_H
00090