<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
        http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->

# 状态码

IoTDB 引入了**状态码**这一概念。例如，因为 IoTDB 需要在写入数据之前首先注册时间序列，一种可能的解决方案是：

```
try {
    writeData();
} catch (SQLException e) {
  // the most case is that the time series does not exist
  if (e.getMessage().contains("exist")) {
      //However, using the content of the error message is not so efficient
      registerTimeSeries();
      //write data once again
      writeData();
  }
}

```

利用状态码，我们就可以不必写诸如`if (e.getErrorMessage().contains("exist"))`的代码，
只需要使用`e.getStatusType().getCode() == TSStatusCode.TIME_SERIES_NOT_EXIST_ERROR.getStatusCode()`。

这里是状态码和相对应信息的列表：

| 状态码  | 状态类型                                   | 状态信息                      |
|:-----|:---------------------------------------|:--------------------------|
| 200  | SUCCESS_STATUS                         | 成功状态                      |
| 201  | INCOMPATIBLE_VERSION                   | 版本不兼容                     |
| 202  | CONFIGURATION_ERROR                    | 配置文件有错误项                  |
| 203  | START_UP_ERROR                         | 启动错误                      |
| 204  | SHUT_DOWN_ERROR                        | 关机错误                      |
| 300  | UNSUPPORTED_OPERATION                  | 不支持的操作                    |
| 301  | EXECUTE_STATEMENT_ERROR                | 执行语句错误                    |
| 302  | MULTIPLE_ERROR                         | 多行语句执行错误                  |
| 303  | ILLEGAL_PARAMETER                      | 参数错误                      |
| 304  | OVERLAP_WITH_EXISTING_TASK             | 与正在执行的其他操作冲突              |
| 305  | INTERNAL_SERVER_ERROR                  | 服务器内部错误                   |
| 306  | DISPATCH_ERROR                         | 分发错误                      |
| 400  | REDIRECTION_RECOMMEND                  | 推荐客户端重定向                  |
| 500  | DATABASE_NOT_EXIST                     | 数据库不存在                    |
| 501  | DATABASE_ALREADY_EXISTS                | 数据库已存在                    |
| 502  | SERIES_OVERFLOW                        | 序列数量超过阈值                  |
| 503  | TIMESERIES_ALREADY_EXIST               | 时间序列已存在                   |
| 504  | TIMESERIES_IN_BLACK_LIST               | 时间序列正在删除                  |
| 505  | ALIAS_ALREADY_EXIST                    | 路径别名已经存在                  |
| 506  | PATH_ALREADY_EXIST                     | 路径已经存在                    |
| 507  | METADATA_ERROR                         | 处理元数据错误                   |
| 508  | PATH_NOT_EXIST                         | 路径不存在                     |
| 509  | ILLEGAL_PATH                           | 路径不合法                     |
| 510  | CREATE_TEMPLATE_ERROR                  | 创建物理量模板失败                 |
| 511  | DUPLICATED_TEMPLATE                    | 元数据模板重复                   |
| 512  | UNDEFINED_TEMPLATE                     | 元数据模板未定义                  |
| 513  | TEMPLATE_NOT_SET                       | 元数据模板未设置                  |
| 514  | DIFFERENT_TEMPLATE                     | 元数据模板不一致                  |
| 515  | TEMPLATE_IS_IN_USE                     | 元数据模板正在使用                 |
| 516  | TEMPLATE_INCOMPATIBLE                  | 元数据模板不兼容                  |
| 517  | SEGMENT_NOT_FOUND                      | 未找到 Segment               |
| 518  | PAGE_OUT_OF_SPACE                      | PBTreeFile 中 Page 空间不够    |
| 519  | RECORD_DUPLICATED                      | 记录重复                      |
| 520  | SEGMENT_OUT_OF_SPACE                   | PBTreeFile 中 segment 空间不够 |
| 521  | PBTREE_FILE_NOT_EXISTS                | PBTreeFile 不存在            |
| 522  | OVERSIZE_RECORD                        | 记录大小超过元数据文件页面大小           |
| 523  | PBTREE_FILE_REDO_LOG_BROKEN           | PBTreeFile 的 redo 日志损坏    |
| 524  | TEMPLATE_NOT_ACTIVATED                 | 元数据模板未激活                  |
| 526  | SCHEMA_QUOTA_EXCEEDED                  | 集群元数据超过配额上限               |
| 527  | MEASUREMENT_ALREADY_EXISTS_IN_TEMPLATE | 元数据模板中已存在物理量              |
| 600  | SYSTEM_READ_ONLY                       | IoTDB 系统只读                |
| 601  | STORAGE_ENGINE_ERROR                   | 存储引擎相关错误                  |
| 602  | STORAGE_ENGINE_NOT_READY               | 存储引擎还在恢复中，还不能接受读写操作       |
| 603  | DATAREGION_PROCESS_ERROR               | DataRegion 相关错误           |
| 604  | TSFILE_PROCESSOR_ERROR                 | TsFile 处理器相关错误            |
| 605  | WRITE_PROCESS_ERROR                    | 写入相关错误                    |
| 606  | WRITE_PROCESS_REJECT                   | 写入拒绝错误                    |
| 607  | OUT_OF_TTL                             | 插入时间少于 TTL 时间边界           |
| 608  | COMPACTION_ERROR                       | 合并错误                      |
| 609  | ALIGNED_TIMESERIES_ERROR               | 对齐时间序列错误                  |
| 610  | WAL_ERROR                              | WAL 异常                    |
| 611  | DISK_SPACE_INSUFFICIENT                | 磁盘空间不足                    |
| 700  | SQL_PARSE_ERROR                        | SQL 语句分析错误                |
| 701  | SEMANTIC_ERROR                         | SQL 语义错误                  |
| 702  | GENERATE_TIME_ZONE_ERROR               | 生成时区错误                    |
| 703  | SET_TIME_ZONE_ERROR                    | 设置时区错误                    |
| 704  | QUERY_NOT_ALLOWED                      | 查询语句不允许                   |
| 705  | LOGICAL_OPERATOR_ERROR                 | 逻辑符相关错误                   |
| 706  | LOGICAL_OPTIMIZE_ERROR                 | 逻辑优化相关错误                  |
| 707  | UNSUPPORTED_FILL_TYPE                  | 不支持的填充类型                  |
| 708  | QUERY_PROCESS_ERROR                    | 查询处理相关错误                  |
| 709  | MPP_MEMORY_NOT_ENOUGH                  | MPP 框架中任务执行内存不足           |
| 710  | CLOSE_OPERATION_ERROR                  | 关闭操作错误                    |
| 711  | TSBLOCK_SERIALIZE_ERROR                | TsBlock 序列化错误             |
| 712  | INTERNAL_REQUEST_TIME_OUT              | MPP 操作超时                  |
| 713  | INTERNAL_REQUEST_RETRY_ERROR           | 内部操作重试失败                  |
| 714  | NO_SUCH_QUERY                          | 查询不存在                     |
| 715  | QUERY_WAS_KILLED                       | 查询执行时被终止                  |
| 800  | UNINITIALIZED_AUTH_ERROR               | 授权模块未初始化                  |
| 801  | WRONG_LOGIN_PASSWORD                   | 用户名或密码错误                  |
| 802  | NOT_LOGIN                              | 没有登录                      |
| 803  | NO_PERMISSION                          | 没有操作权限                    |
| 804  | USER_NOT_EXIST                         | 用户不存在                     |
| 805  | USER_ALREADY_EXIST                     | 用户已存在                     |
| 806  | USER_ALREADY_HAS_ROLE                  | 用户拥有对应角色                  |
| 807  | USER_NOT_HAS_ROLE                      | 用户未拥有对应角色                 |
| 808  | ROLE_NOT_EXIST                         | 角色不存在                     |
| 809  | ROLE_ALREADY_EXIST                     | 角色已存在                     |
| 810  | ALREADY_HAS_PRIVILEGE                  | 已拥有对应权限                   |
| 811  | NOT_HAS_PRIVILEGE                      | 未拥有对应权限                   |
| 812  | CLEAR_PERMISSION_CACHE_ERROR           | 清空权限缓存失败                  |
| 813  | UNKNOWN_AUTH_PRIVILEGE                 | 未知权限                      |
| 814  | UNSUPPORTED_AUTH_OPERATION             | 不支持的权限操作                  |
| 815  | AUTH_IO_EXCEPTION                      | 权限模块IO异常                  |
| 900  | MIGRATE_REGION_ERROR                   | Region 迁移失败               |
| 901  | CREATE_REGION_ERROR                    | 创建 region 失败              |
| 902  | DELETE_REGION_ERROR                    | 删除 region 失败              |
| 903  | PARTITION_CACHE_UPDATE_ERROR           | 更新分区缓存失败                  |
| 904  | CONSENSUS_NOT_INITIALIZED              | 共识层未初始化，不能提供服务            |
| 905  | REGION_LEADER_CHANGE_ERROR             | Region leader 迁移失败        |
| 906  | NO_AVAILABLE_REGION_GROUP              | 无法找到可用的 Region 副本组        |
| 907  | LACK_DATA_PARTITION_ALLOCATION         | 调用创建数据分区方法的返回结果里缺少信息      |
| 1000 | DATANODE_ALREADY_REGISTERED            | DataNode 在集群中已经注册         |
| 1001 | NO_ENOUGH_DATANODE                     | DataNode 数量不足，无法移除节点或创建副本 |
| 1002 | ADD_CONFIGNODE_ERROR                   | 新增 ConfigNode 失败          |
| 1003 | REMOVE_CONFIGNODE_ERROR                | 移除 ConfigNode 失败          |
| 1004 | DATANODE_NOT_EXIST                     | 此 DataNode 不存在            |
| 1005 | DATANODE_STOP_ERROR                    | DataNode 关闭失败             |
| 1006 | REMOVE_DATANODE_ERROR                  | 移除 datanode 失败            |
| 1007 | REGISTER_DATANODE_WITH_WRONG_ID        | 注册的 DataNode 中有错误的注册id    |
| 1008 | CAN_NOT_CONNECT_DATANODE               | 连接 DataNode 失败            |
| 1100 | LOAD_FILE_ERROR                        | 加载文件错误                    |
| 1101 | LOAD_PIECE_OF_TSFILE_ERROR             | 加载 TsFile 片段异常            |
| 1102 | DESERIALIZE_PIECE_OF_TSFILE_ERROR      | 反序列化 TsFile 片段异常          |
| 1103 | SYNC_CONNECTION_ERROR                  | 同步连接错误                    |
| 1104 | SYNC_FILE_REDIRECTION_ERROR            | 同步文件时重定向异常                |
| 1105 | SYNC_FILE_ERROR                        | 同步文件异常                    |
| 1106 | CREATE_PIPE_SINK_ERROR                 | 创建 PIPE Sink 失败           |
| 1107 | PIPE_ERROR                             | PIPE 异常                   |
| 1108 | PIPESERVER_ERROR                       | PIPE server 异常            |
| 1109 | VERIFY_METADATA_ERROR                  | 校验元数据失败                   |
| 1200 | UDF_LOAD_CLASS_ERROR                   | UDF 加载类异常                 |
| 1201 | UDF_DOWNLOAD_ERROR                     | 无法从 ConfigNode 下载 UDF     |
| 1202 | CREATE_UDF_ON_DATANODE_ERROR           | 在 DataNode 创建 UDF 失败      |
| 1203 | DROP_UDF_ON_DATANODE_ERROR             | 在 DataNode 卸载 UDF 失败      |
| 1300 | CREATE_TRIGGER_ERROR                   | ConfigNode 创建 Trigger 失败  |
| 1301 | DROP_TRIGGER_ERROR                     | ConfigNode 删除 Trigger 失败  |
| 1302 | TRIGGER_FIRE_ERROR                     | 触发器执行错误                   |
| 1303 | TRIGGER_LOAD_CLASS_ERROR               | 触发器加载类异常                  |
| 1304 | TRIGGER_DOWNLOAD_ERROR                 | 从 ConfigNode 下载触发器异常      |
| 1305 | CREATE_TRIGGER_INSTANCE_ERROR          | 创建触发器实例异常                 |
| 1306 | ACTIVE_TRIGGER_INSTANCE_ERROR          | 激活触发器实例异常                 |
| 1307 | DROP_TRIGGER_INSTANCE_ERROR            | 删除触发器实例异常                 |
| 1308 | UPDATE_TRIGGER_LOCATION_ERROR          | 更新有状态的触发器所在 DataNode 异常   |
| 1400 | NO_SUCH_CQ                             | CQ 任务不存在                  |
| 1401 | CQ_ALREADY_ACTIVE                      | CQ 任务已激活                  |
| 1402 | CQ_AlREADY_EXIST                       | CQ 任务已存在                  |
| 1403 | CQ_UPDATE_LAST_EXEC_TIME_ERROR         | CQ 更新上一次执行时间失败            |

> 在最新版本中，我们重构了 IoTDB 的异常类。通过将错误信息统一提取到异常类中，并为所有异常添加不同的错误代码，从而当捕获到异常并引发更高级别的异常时，错误代码将保留并传递，以便用户了解详细的错误原因。
除此之外，我们添加了一个基础异常类“ProcessException”，由所有异常扩展。
