精通LevelDB
上QQ阅读APP看书,第一时间看更新

2.2 错误处理Status

在LevelDB中,为了便于抛出异常,定义了一个Status类,该类主要用作函数的返回参数。一般而言,函数处理错误信息主要由错误代码与具体的错误描述信息组成。对于错误代码,LevelDB中定义了6种状态码,这6种状态码定义在一个枚举类型Code中,如下所示:

enum Code {
    kOk = 0,
    kNotFound = 1,
    kCorruption = 2,
    kNotSupported = 3,
    kInvalidArgument = 4,
    kIOError = 5
};

上述代码中定义了LevelDB中关于函数操作的6种状态。其中除了kOk代表操作正常以外,另外5种均为异常:kNotFound表示没有找到相关项;kCorruption代表数据异常崩溃;kNotSupported表示不支持;kInvalidArgument表示非法参数;kIOError表示I/O操作错误。

在Status类中,所有状态信息,包括状态码与具体描述,都保存在一个私有的成员变量const char* state_中。其具体表示方法如下。

1)当状态为OK时,state_为NULL,说明当前操作一切正常。

2)否则,state为一个char数组,即state[0...3] == msg的长度,state[4] = code,state[5...] = msg。