表格存储Java SDK目前采用“异常”的方式处理错误。本文介绍了表格存储错误处理方式、异常处理信息和出错时的重试策略。
方式
表格存储Java SDK目前采用“异常”的方式处理错误,如果调用接口没有抛出异常,则说明操作成功,否则失败。
批量相关接口,例如BatchGetRow和BatchWriteRow不仅需要判断是否有异常,还需要检查每行的状态是否成功,只有全部成功后才能保证整个接口调用是成功的。
异常
表格存储Java SDK中有ClientException和TableStoreException两种异常,都最终继承自RuntimeException。
ClientException:指SDK内部出现的异常,例如参数设置错误等。
TableStoreException:指服务器端错误,来自于对服务器错误信息的解析。TableStoreException包含以下几个成员:
getHttpStatus():HTTP返回码,例如200、404等。
getErrorCode():表格存储返回的错误类型字符串。
getRequestId():用于唯一标识此次请求的UUID。当您无法解决问题时,请记录此RequestId并提交工单。
重试
SDK中出现错误时会自动重试。默认策略是最大重试时长为10s。对流控类错误以及读操作相关的服务端内部错误进行重试。
您也可以通过继承RetryStrategy类实现自定义重试策略,在构造OTSClient对象时,将自定义的重试策略作为参数传入。
目前SDK中已经实现的重试策略如下:
DefaultRetryStrategy:默认重试策略,只会对读操作重试,重试间隔时间以10 ms指数增长,最大重试时长为10s。
AlwaysRetryStrategy:对所有类型的请求进行重试,最大重试3次,重试间隔时间以4 ms指数增长,最大重试间隔为1s。