代码拉取完成,页面将自动刷新
/*
* Exceptions.h
*
* Created on: Jul 22, 2012
* Author: dzhou
*/
#ifndef EXCEPTIONS_H_
#define EXCEPTIONS_H_
#include <exception>
#include <string>
#include "Types.h"
using std::exception;
using std::string;
class TraceableException : public exception {
public:
void addPath(const string& path);
const string& getPath() const {return path_;}
const string& getLastThrow() const { return lastThrow_;}
void setLastThrow(const string& lastThrow);
protected:
string path_;
string lastThrow_;
};
class IncompatibleTypeException: public TraceableException{
public:
IncompatibleTypeException(DATA_TYPE expected, DATA_TYPE actual);
virtual ~IncompatibleTypeException() throw(){}
virtual const char* what() const throw() { return errMsg_.c_str();}
DATA_TYPE expectedType(){return expected_;}
DATA_TYPE actualType(){return actual_;}
private:
DATA_TYPE expected_;
DATA_TYPE actual_;
string errMsg_;
};
class IllegalArgumentException : public TraceableException{
public:
IllegalArgumentException(const string& functionName, const string& errMsg): functionName_(functionName), errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~IllegalArgumentException() throw(){}
const string& getFunctionName() const { return functionName_;}
private:
const string functionName_;
const string errMsg_;
};
class RuntimeException: public TraceableException{
public:
RuntimeException(const string& errMsg):errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~RuntimeException() throw(){}
private:
const string errMsg_;
};
class OperatorRuntimeException: public TraceableException{
public:
OperatorRuntimeException(const string& optr,const string& errMsg): operator_(optr),errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~OperatorRuntimeException() throw(){}
const string& getOperatorName() const { return operator_;}
private:
const string operator_;
const string errMsg_;
};
class TableRuntimeException: public TraceableException{
public:
TableRuntimeException(const string& errMsg): errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~TableRuntimeException() throw(){}
private:
const string errMsg_;
};
class MemoryException: public TraceableException{
public:
MemoryException():errMsg_("Out of memory"){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~MemoryException() throw(){}
private:
const string errMsg_;
};
class IOException: public TraceableException{
public:
IOException(const string& errMsg): errMsg_(errMsg), errCode_(OTHERERR){}
IOException(const string& errMsg, IO_ERR errCode): errMsg_(errMsg + ". " + getCodeDescription(errCode)), errCode_(errCode){}
IOException(IO_ERR errCode): errMsg_(getCodeDescription(errCode)), errCode_(errCode){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~IOException() throw(){}
IO_ERR getErrorCode() const {return errCode_;}
private:
string getCodeDescription(IO_ERR errCode) const;
private:
const string errMsg_;
const IO_ERR errCode_;
};
class FileChunkVersionCheckException : public exception{
public:
FileChunkVersionCheckException(const string& errMsg) : errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~FileChunkVersionCheckException() throw(){}
private:
const string errMsg_;
};
class DataCorruptionException: public exception {
public:
DataCorruptionException(const string& errMsg) : errMsg_("<DataCorruption>" + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~DataCorruptionException() throw(){}
private:
const string errMsg_;
};
class NotLeaderException: public exception {
public:
//Electing a leader. Wait for a while to retry.
NotLeaderException() : errMsg_("<NotLeader>"){}
//Use the new leader specified in the input argument. format: <host>:<port>:<alias>, e.g. 192.168.1.10:8801:nodeA
NotLeaderException(const string& newLeader) : errMsg_("<NotLeader>" + newLeader), newLeader_(newLeader){}
const string& getNewLeader() const {return newLeader_;}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~NotLeaderException() throw(){}
private:
const string errMsg_;
const string newLeader_;
};
class ChunkInTransactionException: public exception {
public:
ChunkInTransactionException(const string& errMsg) : errMsg_("<ChunkInTransaction>" + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~ChunkInTransactionException() throw(){}
private:
const string errMsg_;
};
class ChunkInRecoveryException: public exception {
public:
ChunkInRecoveryException(const string& errMsg) : errMsg_("<ChunkInRecovery>" + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~ChunkInRecoveryException() throw(){}
private:
const string errMsg_;
};
class DataNodeNotAvailException : public exception {
public:
DataNodeNotAvailException(const string& errMsg) : errMsg_("<DataNodeNotAvail>" + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~DataNodeNotAvailException() throw(){}
private:
const string errMsg_;
};
class ControllerNotAvailException : public exception {
public:
ControllerNotAvailException(const string& errMsg) : errMsg_("<ControllerNotAvail>" + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~ControllerNotAvailException() throw(){}
private:
const string errMsg_;
};
class ControllerNotReadyException : public exception {
public:
ControllerNotReadyException() : errMsg_("<ControllerNotReady>"){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~ControllerNotReadyException() throw(){}
private:
const string errMsg_;
};
class MathException: public TraceableException {
public:
MathException(const string& errMsg) : errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~MathException() throw(){}
private:
const string errMsg_;
};
class DataNodeNotReadyException: public TraceableException{
public:
DataNodeNotReadyException(const string& errMsg) : errMsg_("<DataNodeNotReady>" + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~DataNodeNotReadyException() throw(){}
private:
const string errMsg_;
};
class NoPrivilegeException: public TraceableException{
public:
NoPrivilegeException(const string& errMsg, bool notAuthenticated) : errMsg_((notAuthenticated ? "<NotAuthenticated>" : "<NoPrivilege>") + errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~NoPrivilegeException() throw(){}
private:
const string errMsg_;
};
class UserException: public TraceableException{
public:
UserException(const string exceptionType, const string& msg) : exceptionType_(exceptionType), msg_(msg){}
virtual const char* what() const throw(){
return msg_.c_str();
}
const string& getExceptionType() const { return exceptionType_;}
const string& getMessage() const { return msg_;}
virtual ~UserException() throw(){}
private:
string exceptionType_;
string msg_;
};
class SyntaxException: public exception{
public:
SyntaxException(const string& errMsg): errMsg_(errMsg){}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
virtual ~SyntaxException() throw(){}
private:
const string errMsg_;
};
class TestingException: public exception{
public:
TestingException(const string& caseName,const string& subCaseName): name_(caseName),subName_(subCaseName){
if(subName_.empty())
errMsg_="Testing case "+name_+" failed";
else
errMsg_="Testing case "+name_+"_"+subName_+" failed";
}
virtual const char* what() const throw(){
return errMsg_.c_str();
}
const string& getCaseName() const {return name_;}
const string& getSubCaseName() const {return subName_;}
virtual ~TestingException() throw(){}
private:
const string name_;
const string subName_;
string errMsg_;
};
#endif /* EXCEPTIONS_H_ */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。