黄新章专栏

君子事来而心始现,事去而心随空。

错误类型自定义

.h文件

#pragma once

#include <string>
#include <stdexcept>

class ArdError : public std::logic_error
{
public:
 enum ARD_ERROR_TYPE {
  FILE_OPEN_FAILURE,
  FILE_READ_FAILURE,

 };

 ArdError(const char * errMsg);
 ArdError(std::string errMsg);
 ArdError(ARD_ERROR_TYPE errType);
 ArdError(ARD_ERROR_TYPE errType, exception* e);
 ~ArdError(void);

 ARD_ERROR_TYPE GetErrorType(void) { return _errorType; }
private:
 ARD_ERROR_TYPE _errorType;
 exception* _exception;


 inline const char * getErrMsg(ARD_ERROR_TYPE errType);
};

.cpp文件


#include "./ArdError.h"

static const char * ERROR_MESSAGE[] = {
 "open file fail, please check file path and file permission",
 "read file fail, please check file path and file permission"
};

ArdError::ArdError(const char * errMsg)
: logic_error(errMsg), _errorType(COMMON), _exception(NULL)
{
}

ArdError::ArdError(std::string errMsg)
: logic_error(errMsg.c_str()), _errorType(COMMON), _exception(NULL)
{
}

ArdError::ArdError(ARD_ERROR_TYPE errType)
 : logic_error(ERROR_MESSAGE[errType]), _errorType(errType), _exception(NULL)
{
 
}

ArdError::ArdError(ARD_ERROR_TYPE errType, exception* e)
 : logic_error(ERROR_MESSAGE[errType]), _errorType(errType), _exception(e)
{
}

ArdError::~ArdError(void)
{
}

inline const char * ArdError::getErrMsg(ARD_ERROR_TYPE errType) {

 return ERROR_MESSAGE[errType];
}

应用例子:

try {

  CsvFile::ReadCsvAttData(filename, spShpCon);

}

 catch(ArdError &e)
 {
  if(e.GetErrorType() == ArdError::FILE_OPEN_FAILURE );

}

阅读更多
想对作者说点什么? 我来说一句

findbugs错误类型的中文解释

2013年12月10日 41KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭