错误处理与恢复
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。完整类型见类型、枚举与错误。