跳到主要内容
知识地图失败以后,应该重试还是换一个做法?ArcBlock 体系

你在这里。看看这个问题与其他知识怎样相连。

选择节点前往页面 · 展开后可留在地图中阅读

知识地图沿着连接,读懂一个问题
← AFS 与界面

一个问题

失败以后,应该重试还是换一个做法?

不存在、不支持、被拒绝和版本冲突,需要不同的处理。

一个 agent 读取报告失败,如果所有错误都被解释成“再试一次”,它可能不断重复同一件不会成功的事。界面也可能只显示“出错了”,让人不知道下一步。

先分清失败的含义:

情况它意味着什么一个合理的下一步
资源不存在当前环境无法在该地址找到目标核对地址与资源是否已移动
操作不支持实现没有提供这种操作查能力,选择受支持的方式
访问被拒绝或只读这次操作不符合访问限制检查权限或向有权者请求合适操作
版本冲突修改基于已过时的版本读取新内容,决定如何处理差异

AFS 用不同错误码表达这些类别。对程序而言,按错误类别处理,比只匹配一句给人看的错误文字更可靠。

重试仍有用途,例如暂时网络中断;但要考虑动作是否已经产生效果。一次投票请求没有收到回应,不足以判断票一定没有记入。应用需要根据动作的重试约定确认状态,不能无条件重复调用。

稳定的操作语义也包括失败:调用者应知道什么没有发生、什么仍不确定,以及下一步能做什么。

继续深入

AFS 技术文档。

检查一下理解

投票请求没有收到回应,能否立刻断定投票失败并重复提交?

不能。动作可能已经执行,应依据重试约定确认状态,避免重复效果。

沿着学习路径继续