- 浏览: 373570 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
对于不同的项目而言,error code返回机制是不一样的,但是能够很好的管理好不同模块间的Error Code并不是一件简单的事情,下面有一种比较简便的方法如下:
One sample for this architecture, it's easy to control, isn't it? Any problems, please let me know.
/**************************************************************************************************/ /*! \file CommonErrors.h \attention (c) Jacky Dai 2011~2016 All Rights Reserved. */ /**************************************************************************************************/ #ifndef XX_COMMON_ERRORS_H #define XX_COMMON_ERRORS_H /*** Include Files ********************************************************************************/ /*** Defines/Macros/Constants/Typedefs ************************************************************/ namespace XXSpace { //basic mask code const unsigned int COMPONENT_MASK = 0x8000; //component code const unsigned int COMPONENT_LOGIN = 0x0001; const unsigned int COMPONENT_DATAMANAGER = 0x0002; // //0x0000XXXX:XXXX means component code //0xXXXX0000:XXXX means error code of component //Define some marcos/functions here #define SYSTEM_ERROR_FLAG (0x4000) #define SYSTEM_ERROR(code) ((code | SYSTEM_ERROR_FLAG) << 16) #define ERROR_IS_SYSTEM_ERROR(err) (((err >> 16) & SYSTEM_ERROR_FLAG) != 0) #define COMPONENT_ERROR(component, code) ((code << 16) | (component & ~(COMPONENT_MASK))) #define CODE_FROM_ERROR(err) (static_cast<short>(err >> 16)) //All of the error code is here typedef enum { // Hex | Decimal | Descriptio //Basic error ERR_OK = 0x00000000, //<< 0x00000000 | 0 | No error. ERR_SYSTEM = SYSTEM_ERROR(1), //<< 0x00010000 | 65536 | General system error. ERR_TIMEOUT = SYSTEM_ERROR(2), //<< 0x00020000 | 131072 | Time out. //login component LOGIN_ERROR_UNKNOWN_ERROR = COMPONENT_ERROR(COMPONENT_LOGIN, 1), //<< 0x00010001 |65537 | Unrecognized error. LOGIN_ERROR_UNKNOWN_USER_NAME = COMPONENT_ERROR(COMPONENT_LOGIN, 2), //<< 0x00020001 |131073 | Unrecognized user name, it is case sensitive. //data manager component DATAMANAGER_ERROR_UNKNOWN_ERROR = COMPONENT_ERROR(COMPONENT_DATAMANAGER, 1), //<< 0x00010002 |65538 | Unrecognized error. DATAMANAGER_ERROR_MISSING_CONNECTION = COMPONENT_ERROR(COMPONENT_DATAMANAGER, 2) //<< 0x00020002 |131074 | Connection missed. } XXCommonError; /**************************************************************************************************/ /*! \class ErrorHelper Class with commands for translating error codes to useful strings. */ /**************************************************************************************************/ class ErrorHelper { public: static const char* getErrorName(XXCommonError error); static const char* getErrorDescription(XXCommonError error); }; } // XXSpace #endif //XX_COMMON_ERRORS_H
/**************************************************************************************************/ /*! \file CommonErrors.cpp \attention (c) Jacky Dai 2011~2016 All Rights Reserved. */ /**************************************************************************************************/ /*** Include Files ********************************************************************************/ #include "CommonErrors.h" /*** Defines/Macros/Constants/Typedefs ************************************************************/ namespace XXSpace { /*** Public Methods ******************************************************************************/ const char* ErrorHelper::getErrorName(XXCommonError error) { const char* result = "UKNOWN"; switch (error) { case ERR_OK: result = "ERR_OK"; break; case ERR_SYSTEM: result = "ERR_SYSTEM"; break; case ERR_TIMEOUT: result = "ERR_TIMEOUT"; break; case LOGIN_ERROR_UNKNOWN_ERROR: result = "LOGIN_ERROR_UNKNOWN_ERROR"; break; case LOGIN_ERROR_UNKNOWN_USER_NAME: result = "LOGIN_ERROR_UNKNOWN_USER_NAME"; break; case DATAMANAGER_ERROR_UNKNOWN_ERROR: result = "DATAMANAGER_ERROR_UNKNOWN_ERROR"; break; case DATAMANAGER_ERROR_MISSING_CONNECTION: result = "DATAMANAGER_ERROR_MISSING_CONNECTION"; break; default: break; } return result; } const char* ErrorHelper::getErrorDescription(XXCommonError error) { const char *result = "UKNOWN"; switch (error) { case ERR_OK: result = "No error."; break; case ERR_SYSTEM: result = "General system error."; break; case ERR_TIMEOUT: result = "Time out."; break; case LOGIN_ERROR_UNKNOWN_ERROR: result = "Unrecognized error."; break; case LOGIN_ERROR_UNKNOWN_USER_NAME: result = "Unrecognized user name, it is case sensitive."; break; case DATAMANAGER_ERROR_UNKNOWN_ERROR: result = "Unrecognized error."; break; case DATAMANAGER_ERROR_MISSING_CONNECTION: result = "Connection missed."; break; default: break; } return result; } } // XXSpace
One sample for this architecture, it's easy to control, isn't it? Any problems, please let me know.
#include <Windows.h> #include "CommonErrors.h" #include <iostream> using namespace std; /**************************************************************************************************/ /*! \class XXStub Stub class for the XXXX. */ /**************************************************************************************************/ class Login{}; class LoginStub : public Login { public: typedef enum { ERR_OK = XXSpace::ERR_OK, ERR_SYSTEM = XXSpace::ERR_SYSTEM, ERR_TIMEOUT = XXSpace::ERR_TIMEOUT, LOGIN_ERROR_UNKNOWN_ERROR = XXSpace::LOGIN_ERROR_UNKNOWN_ERROR, LOGIN_ERROR_UNKNOWN_USER_NAME = XXSpace::LOGIN_ERROR_UNKNOWN_USER_NAME } Errors; Errors DoLogin(const char* userName, const char* password); const char* GetLoginStubErrorName(Errors error); const char* getErrorDescription(Errors error); }; LoginStub::Errors LoginStub::DoLogin(const char* userName, const char* password) { if( userName==NULL || password==NULL ) { return LOGIN_ERROR_UNKNOWN_USER_NAME; } return ERR_OK; } const char* LoginStub::GetLoginStubErrorName(Errors error) { return XXSpace::ErrorHelper::getErrorName(static_cast<XXSpace::XXCommonError>(error)); } const char* LoginStub::getErrorDescription(Errors error) { return XXSpace::ErrorHelper::getErrorDescription(static_cast<XXSpace::XXCommonError>(error)); } class DataManager{}; class DataManagerStub : public DataManager { public: typedef enum { ERR_OK = XXSpace::ERR_OK, ERR_SYSTEM = XXSpace::ERR_SYSTEM, ERR_TIMEOUT = XXSpace::ERR_TIMEOUT, DATAMANAGER_ERROR_UNKNOWN_ERROR = XXSpace::DATAMANAGER_ERROR_UNKNOWN_ERROR, DATAMANAGER_ERROR_MISSING_CONNECTION = XXSpace::DATAMANAGER_ERROR_MISSING_CONNECTION } Errors; Errors Test(); const char* GetDataManagerStubErrorName(Errors error); const char* getErrorDescription(Errors error); }; DataManagerStub::Errors DataManagerStub::Test() { return DATAMANAGER_ERROR_UNKNOWN_ERROR; } const char* DataManagerStub::GetDataManagerStubErrorName(Errors error) { return XXSpace::ErrorHelper::getErrorName(static_cast<XXSpace::XXCommonError>(error)); } const char* DataManagerStub::getErrorDescription(Errors error) { return XXSpace::ErrorHelper::getErrorDescription(static_cast<XXSpace::XXCommonError>(error)); } ////////////////////////////////////////////////////////////////////////// void main() { LoginStub cLogin; LoginStub::Errors loginError = cLogin.DoLogin(NULL, NULL); cout << hex << loginError << " = "; cout << cLogin.GetLoginStubErrorName(loginError) << endl; cout << cLogin.getErrorDescription(loginError) << endl; DataManagerStub dm; DataManagerStub::Errors dmError = dm.Test(); cout << hex << dmError << " = "; cout << dm.GetDataManagerStubErrorName(dmError) << endl; cout << dm.getErrorDescription(dmError) << endl; }
- Architecture_of_Error_Code.zip (2 KB)
- 下载次数: 10
- ErrorCodeFramework.zip (5 KB)
- 下载次数: 1
发表评论
-
FreeRTOS
2022-03-05 16:31 253Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 417https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1346https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 481https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 580// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 593https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5828583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 609参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2177基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9161 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1596OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1886ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 879转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1926转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1095C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 974转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 1006转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 821参考链接 http://blog.csdn.net/weiwe ... -
C++ 鼠标模拟程序
2016-09-04 12:09 1623转自 http://blog.csdn.net/weixinh ...
相关推荐
总之,通过定义错误代码枚举和提供`ErrorHelper`类,我们可以创建一个结构化的错误处理框架,便于在C++项目中管理和报告错误。这不仅可以提高代码的可读性和可维护性,还能帮助开发者更快地定位和解决问题。在实际...
标题 "解决createprocess error code 740" 指的是在尝试运行一个应用程序时遇到的一个特定错误,其中 `CreateProcess` 是 Windows API 中用于创建新进程的函数。错误代码 740 表示 "请求的操作需要提升的权限",意味...
在这个“dlna C++ source code”中,我们很显然将探讨如何使用C++编程语言实现DLNA规范的相关功能。 首先,我们需要了解DLNA的核心概念。DLNA标准主要由以下组件构成: 1. **设备(Devices)**:DLNA网络中的任何...
"Demo - Replace Error Code With Exception" 这个主题着重于将传统的错误码机制替换为异常处理机制,以提高代码的可读性、可维护性和异常处理的效率。 错误码通常是通过返回特定的整数值来指示函数或方法执行期间...
博文的配套源码 《【 Visual C++】游戏开发笔记之二——最简单的directx,vc窗口的编写 》 ,原文地址为http://blog.csdn.net/zhmxy555/article/details/7318634, 源码编译环境为vs2010. 我的博客地址是...
no bugs!delivering error-free code in c & c++
在Windows平台进行C++程序开发时,开发者经常需要处理各种系统调用或API函数返回的错误信息。为了帮助VC++开发初学者能够快速查找并理解这些错误代码,从而提高开发效率,本篇文章将详细介绍一系列常见的Win32错误...
在Symbian操作系统中,错误处理是通过一个称为`error_code`的机制来实现的。这个机制为开发者提供了一种标准化的方式来识别和处理程序运行时出现的问题。`error_code`是一个整数值,它对应于特定的错误信息或状态,...
标题中的"c++_code_php_"似乎暗示了这是一个与C++和PHP编程相关的项目,其中可能包含用这两种语言编写的代码。描述中提到"php code that calculate features",这表明涉及的PHP代码是用来计算某些特性或功能的。由于...
错误纠正码(Error Correction Code,ECC)是数据通信和存储系统中的一种关键技术,用于检测和纠正传输或存储过程中可能出现的错误。ECC在高清DVD(HD DVD)等媒体存储设备中扮演着至关重要的角色,确保了数据的可靠...
The C++ Standard Library provides a set of common classes and interfaces that greatly extend the core C++ language. Josuttis' book not only provides comprehensive documentation of each library ...
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/ 安装twisted包的时候提示microsoft visual c++ 14.0 is required的...
在这里,我们首先调用了`MyCppFunction`,如果C++代码抛出了异常,我们检查`ErrorCode`是否非零。如果是,我们创建一个新的`ApplicationException`,将C++异常的信息包含其中,并重新抛出。这样,C#的异常处理机制就...
《C++现代化程序设计》是一本深入探讨C++现代编程技术的书籍,其"real_sample_code"压缩包包含了书中各个章节的实际示例代码。这些代码旨在帮助读者理解并实践C++的最新特性和最佳实践,从而提升编程技能。在本文中...
例如,C/C++ Error 10100表示“未声明的标识符”,这通常意味着在代码中引用了一个尚未定义的变量或函数。同样,Error 10101和10102分别对应于“预期的表达式”和“预期的分号”,这些都是语法错误,提示开发者检查...
标题 "iFFT.rar_BPSK c++ code_ifft" 暗示了这是一个与数字信号处理相关的项目,具体是使用C++实现BPSK(二进制相移键控)调制并涉及到快速傅里叶逆变换(iFFT)。描述中提到的"error correct coding"表明这是关于...
ERRORCODE OnLineDebug::_func(std::function<ERRORCODE(uint32_t&)> func_) noexcept { // ... (代码省略) } ERRORCODE OnLineDebug::_CheckCfgUUID(uint32_t& cmdid) { // ... (代码省略) } ``` 在 C++11 的...
Well-written code is easier to test and reuse, simpler to parallelize, and less error prone. Mastering the functional style of programming can help you tackle the demands of modern apps and will lead ...