// // MODULE: BaseException. // // PURPOSE: interface for CBaseException class. // // COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com // // AUTHOR: Oleg Kalosha // // ORIGINAL DATE: 9-24-98 // // NOTES: // // Version Date By Comments //-------------------------------------------------------------------- // V3.0 9-24-98 RAB Broke class out of stateless.h and now derive from STL exception. // #ifndef __BASEEXCEPTION_H_ #define __BASEEXCEPTION_H_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include "apgtsstr.h" #include //////////////////////////////////////////////////////////////////////////////////// // utility class to strip out the path of a filename and append the line number. ///////////////////////////////////////////////////////////////////////////////////// class CBuildSrcFileLinenoStr { public: // source_file is LPCSTR rather than LPCTSTR because __FILE__ is char[35] CBuildSrcFileLinenoStr( LPCSTR source_file, int line ); virtual ~CBuildSrcFileLinenoStr() {} CString GetSrcFileLineStr() const; private: CString m_strFileLine; // source file (__FILE__) and line number (__LINE__) of code throwing exception (__FILE__) }; //////////////////////////////////////////////////////////////////////////////////// // basic exception class ///////////////////////////////////////////////////////////////////////////////////// class CBaseException : public exception { public: // source_file is LPCSTR rather than LPCTSTR because __FILE__ is char[35] CBaseException( LPCSTR source_file, int line ); virtual ~CBaseException() {} CString GetSrcFileLineStr() const; private: CString m_strFileLine; // source file (__FILE__) and line number (__LINE__) of code throwing exception (__FILE__) }; //////////////////////////////////////////////////////////////////////////////////// // Class to handle general exception conditions. // Constructor takes a source file name, source file line number, and a developer-defined // error code and error message. class CGeneralException : public CBaseException { public: enum eErr { eErrMemAllocFatal, eErrMemAllocNonFatal } m_eErr; public: CGeneralException( LPCSTR srcFile, // Source file from which the exception was thrown. int srcLineNo, // Source line from which the exception was thrown. LPCTSTR strErrMsg, // Developer defined error message for the exception. DWORD nErrCode // Developer defined error code for the exception. );; virtual ~CGeneralException() {} DWORD GetErrorCode() const; CString GetErrorMsg() const; private: CString m_strErrMsg; // Developer-defined exception error message. DWORD m_nErrCode; // Developer-defined exception error code. }; //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// // Class to handle general system call generated exception conditions. // Constructor takes a source file name, source file line number, and a developer-defined // error code and error message. Automatically generates an internal string from the last // system error code. class CGenSysException : public CGeneralException { public: CGenSysException( LPCSTR srcFile, // Source file from which the exception was thrown. // LPCSTR rather than LPCTSTR because __FILE__ is char[35] int srcLineNo, // Source line from which the exception was thrown. LPCTSTR strErrMsg, // Developer defined error message for the exception. DWORD nErrCode // Developer defined error code for the exception. ); virtual ~CGenSysException() {} CString GetSystemErrStr() const; private: CString m_strSystemErr; // String generated from the last system error code. }; //////////////////////////////////////////////////////////////////////////////////// #endif // // EOF. //