Skip to content

错误处理与恢复

Revo 3 SDK v2.x 使用结构化 SdkError。错误消息用于诊断,应用逻辑应基于错误码、操作效果和恢复要求。

需要记录的字段

  • 错误码(code)与诊断消息(message)。
  • operation_effect:命令是否确定未执行、可能已执行或已知执行结果。
  • recovery_requirement:是否需要重试、重连、复位或人工处理。
  • 目标设备、协议、端口和 SDK/固件版本。
  • 对运动命令同时记录 MotionHandle 的最终状态。

恢复决策

情况处理
参数或布局错误修正输入,不重试原命令
读取暂时失败且连接有效按有限退避策略重试读取
写入效果确定未发生满足恢复要求后有限重试
operation_effect = Indeterminate先读取设备状态,禁止直接重试
连接失效关闭旧对象,重新连接并重新预检
设备故障或要求复位停止运动路径,按恢复要求处理

Python 处理框架

python
try:
    handle = await hand.motion.move_joint(0, 20.0, duration=1.0)
    result = await handle.wait(timeout=3.0)
except sdk.SdkError as error:
    if error.operation_effect == sdk.OperationEffect.Indeterminate:
        state = await hand.state.snapshot()
        report_indeterminate_result(state)
    raise

生产应用应限制重试次数和总时长,并防止多个协程同时恢复同一 Hand。完整类型见类型、枚举与错误

帮助