开发者社区 问答 正文

NodeJS-SDK的错误处理



方式


Table Store NodeJS SDK 目前采用异常的方式处理错误。如果调用接口没有抛出异常,则说明操作成功,否则失败。


[backcolor=transparent]注意:批量相关接口,比如 batchGetRow 和 batchWriteRow 需要检查每个 row 的状态都是成功后才能保证整个接口调用是成功的。


异常


Table Store NodeJS SDK 中所有的错误都经过了统一的处理,最终会返回到callback方法的err参数中,所以在获取返回数据前,需要检查err参数是否有值。如果是Table Store服务端报错,会返回requestId。requestId用于唯一标识该次请求的UUID。当您无法解决问题时,可以凭这个RequestId来请求表格存储开发工程师的帮助。

重试


SDK 中出现错误时会自动重试。默认策略是最大重试次数为20,最大重试间隔为3000毫秒。对流控类错误以及读操作相关的服务端内部错误进行的重试,请参考 tablestore/lib/retry.js。

展开
收起
云栖大讲堂 2017-10-25 16:38:21 2128 分享 版权
阿里云 AI 助理回答

在使用阿里云Table Store的NodeJS SDK时,您会遇到错误处理、异常处理以及重试机制等方面的问题。下面是对您提供信息的一个总结和补充说明:

错误与异常处理

  • 异常处理方式:如您所述,Table Store NodeJS SDK主要通过异常(Error对象)来反馈操作失败的情况。调用接口如果没有抛出异常,则认为操作成功;反之,如果在调用过程中发生错误,SDK会将错误信息通过callback函数的err参数返回给用户。因此,在编写代码处理响应时,务必先检查err是否存在,以确定操作是否顺利完成。

  • 批量操作注意:对于批量操作(例如batchGetRowbatchWriteRow),即使整体操作没有抛出异常,也需要进一步检查每个row的操作状态,因为批量操作中可能部分成功、部分失败。确保所有row都成功才能认为整个批量操作成功。

异常内容

  • 当错误发生时,SDK提供的错误对象通常包含了详细的错误信息,包括但不限于错误码、错误消息以及在服务端出现问题时的requestId。这个requestId是追踪特定请求的重要标识,当您需要技术支持时,请提供此ID以便快速定位问题。

重试机制

  • 自动重试:为了提高操作的可靠性,Table Store NodeJS SDK内置了自动重试逻辑。默认配置下,如果操作因网络波动或服务瞬时故障等原因失败,SDK会自动进行重试,最大尝试次数为20次,且每次重试间隔最多可达3000毫秒(3秒)。这一策略旨在减少因暂时性问题导致的操作失败。

  • 重试策略定制:虽然默认的重试策略适用于大多数场景,但如果您有特殊需求,比如希望调整重试次数或间隔时间,可以参考tablestore/lib/retry.js中的实现,自定义重试逻辑。这要求对SDK内部有一定的了解,并可能需要修改或扩展SDK源码。

总结

在使用阿里云Table Store NodeJS SDK开发应用时,合理利用其内置的错误处理和重试机制能够有效提升应用的稳定性和容错能力。记得在处理回调时检查错误,特别是处理批量操作结果时要逐个验证row的状态,并且在遇到问题时,不要忘记收集并提供requestId给技术支持,以便更快地解决问题。如果有更高级的控制需求,考虑根据文档或源码自定义重试策略。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答