121 lines
3.8 KiB
C++
121 lines
3.8 KiB
C++
//
|
|
// 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 <exception>
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
// 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.
|
|
//
|