{bSuccess = recoveryManager->EarseRecoveryFile(recoveryFileNew);if (!bSuccess){nErrorCode = 19;goto ErrCleanUp;}}if (bDoBackupEncFile)
以上出现错误设置一个错误代码,然后使用跳转至指定标签
ErrCleanUp: { if (INVALID_HANDLE_VALUE != hFile) { CloseHandle(hFile); } if (NULL != recoveryManager) { recoveryManager = NULL; } if(NULL != recoveryFileNew) { recoveryFileNew = NULL; } if (NULL != recoveryFile) { recoveryFile = NULL; } char szHint[1024]; memset(szHint,0,1024); switch (nErrorCode) { case 0: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:打开文件失败",nErrorCode); break; case 1: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:创建恢复管理器失败",nErrorCode); break; case 2: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:获取文件属性失败或不支持",nErrorCode); break; case 3: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:文件头获取失败",nErrorCode); break; case 4: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:文件序列号不一致",nErrorCode); break; case 5: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:创建加密流程失败",nErrorCode); break; case 8: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:解密时备份加密单元失败",nErrorCode); break; case 9: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:重新计算加密单元失败",nErrorCode); break; case 10: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:解密前锁定文件失败",nErrorCode); break; case 11: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:解密加密单元时写失败",nErrorCode); break; case 12: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:解密加密单元时读失败",nErrorCode); break; case 13: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:加密单元或解密单元为空",nErrorCode); break; case 14: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:加密前对加密单元中数据进行备份",nErrorCode); break; case 15: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:加密加密单元时写失败",nErrorCode); break; case 16: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:加密加密单元时读失败",nErrorCode); break; case 17: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:重写文件头失败",nErrorCode); break; case 18: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:清除解密备份失败",nErrorCode); break; case 19: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:清除加密备份失败",nErrorCode); break; default: sprintf(szHint,"重新加密文件失败,错误代码:%d,原因:未知",nErrorCode); } g_objSysErrFile.DoLogMessage(szHint); return false; } return true;
在错误处理中,可以使用统一的输出方式,将错误信息输出,并对资源进行回收。
此方式的好处,在于,程序流程比较清析,代码的可读性较好。避免了重复判断资源回收。适合函数代码较长的程序。
核心思想,对错误信息的统一处理。