⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commexception.hpp

📁 液晶电视完整代码可实现人机界面
💻 HPP
字号:
/** *  通用异常对象类 Version 2.0 * *  Create: 2004-07-25 Modify: 2005-04-18 Complete: 2005-04-18 */// 本类提供的功能如下:// 如果编译环境提供异常处理机制,则throw异常对象// 如果编译环境不提供异常处理机制,则将异常类属性设置为最近的错误。#ifndef __COMMEXCEPTION_H__#define __COMMEXCEPTION_H__#include "cfile_utils.hpp"// 根据错误号生成业务编码CString BuildCNAPSAppCode(int nErrCode);// 根据错误号生成业务编码typedef CString (* BuildAppCodeProc) (int nErrCode);// 通用异常类class CommException{public:    // 构造函数    CommException(LPCSTR sFileName,int nLine,int nErrLevel,int nErrCode,LPCSTR sAppCode,LPCSTR sErrText)    {        m_nLine = nLine;        m_nErrCode = nErrCode;        m_nErrLevel = nErrLevel;        if(!IsEmptyStr(sFileName))  m_strFileName = CFile::ExtractFileName(sFileName);        if(!IsEmptyStr(sErrText))   m_strErrText  = sErrText;        if(!IsEmptyStr(sAppCode))               m_strAppCode = sAppCode;        else            m_strAppCode = m_hProc(m_nErrCode);        DEBUG("THROW_OUT:: %s", ToString().GetBuffer(0));    }    /* -- 旧版本构造函数    CommException(int nErrCode,LPCSTR sErrText)    {        m_nErrCode = nErrCode;        if(!IsEmptyStr(sErrText)) m_strErrText = sErrText;        m_nLine = 0;        m_nErrLevel = 0;        m_strFileName = "";        m_strAppCode = BuildAppCode(m_nErrCode);        DEBUG(ToString().GetBuffer(0));    }    */    CString GetFileName() { return m_strFileName;}     int     GetLine()     { return m_nLine;      }    int     GetErrLevel() { return m_nErrLevel;  }#ifdef WIN32    int     GetErrCode()  { return m_nErrCode;   }#endif    CString GetErrText()  { return m_strErrText; }    CString GetAppCode()  { return m_strAppCode; }    // 组织异常输出信息    CString ToString();    // 输出异常信息(stderr)    void    Print();     // 设置业务码生成函数	static void SetBuildAppCodeProc(BuildAppCodeProc hProc) { m_hProc = hProc; }    // 获取最近的错误号(only use in none-throw mode)    static int GetLastErrCode();    // 获取最近的业务编码(only use in none-throw mode)    static CString GetLastAppCode();    // 获取最近的错误信息(only use in none-throw mode)    static CString GetLastErrText();    // 清除全局错误信息(only use in none-throw mode)    static void ClearError();private:#ifndef WIN32    int     GetErrCode()  { return m_nErrCode;   }#endif    CString m_strFileName;              // 异常文件    int     m_nLine;                    // 异常位置    int     m_nErrCode;                 // 异常编码    int     m_nErrLevel;                // 错误级别    CString m_strAppCode;               // 业务编码    CString m_strErrText;               // 异常信息	static BuildAppCodeProc m_hProc;    // 业务码生成函数};// 抛出错误号+错误信息void ThrowCommException(int nErrCode,LPCSTR sErrText,...);// 抛出错误文件+错误行+错误号+错误信息void ThrowCommException(LPCSTR sFileName,int nLine, int nErrLevel, int nErrCode, LPCSTR sErrText,...);// 抛出错误文件+错误行+错误号+应用码+错误信息void ThrowCommException(LPCSTR sFileName, int nLine, int nErrLevel, int nErrCode, LPCSTR sAppCode, LPCSTR sErrText,...);// 抛出文件中归档的错误void ThrowCommException(LPCSTR sFileName,int nLine, LPCSTR sErrFile,int nErrCode,...);// 抛出文件中归档的错误+附加信息void ThrowCommExceptionExt(LPCSTR sFileName,int nLine, LPCSTR sErrFile,int nErrCode,LPCSTR sExtMsg);#ifdef NONE_THROW// 抛出错误号+错误信息(宏)#define \    ThrowException(nErrCode,sErrText) \    {  \        ThrowCommException(__FILE__, __LINE__, 0, nErrCode, sErrText); \        return nErrCode; \    }// 抛出归档的错误号+附加信息(配置文件)#define \    ThrowExceptionExt(sFileName,nErrCode,sExtMsg)               \    {                                                       \        ThrowCommExceptionExt(__FILE__, __LINE__, sFileName, nErrCode, sExtMsg); \        return nErrCode; \    }#define ClearFailStatus()   { CommException::ClearError(); }#define ExitOnFail()        { if(CommException::GetLastErrCode()!=0) return CommException::GetLastErrCode(); }#else#define \    ThrowException(nErrCode,sErrText) \    {  \        ThrowCommException(__FILE__, __LINE__, 0, nErrCode, sErrText); \    }#define \    ThrowExceptionExt(sFileName,nErrCode,sExtMsg)               \    {                                                       \        ThrowCommExceptionExt(__FILE__,__LINE__, sFileName, nErrCode, sExtMsg); \    }#define ClearFailStatus()   ;#define ExitOnFail()        ;#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -