知识卡片
策略错误消息要给出具体的修复路径
内容
部署被拒绝时只提示”不符合策略”,用户除了反复重试或去找人求助之外什么都做不了。真正有用的错误消息要说清楚具体是哪条规则没满足、期望值是什么——比如工件因从不正确的源URI构建被拒绝,就该提示更新策略允许该URI或从正确URI重新构建。这个需求甚至该往前影响策略语言本身的设计:Google早期一个策略语言原型表达力很强但阻碍了提供可操作的错误消息,最终放弃这种方法、改用一种表达能力有限但错误信息更翔实的语言。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第14章《部署代码》14.6.2节提供可操作的错误消息(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_117.html`)
- 结论依据:原文明确要求"当部署被拒绝时,错误消息必须清楚地说明出了什么问题及其修复方案",并以Google早期策略语言原型因表达力过强而阻碍可操作错误消息、最终改用更有限语言为具体案例。
- 原始内容:当部署被拒绝时,错误消息必须清楚地说明出了什么问题及其修复方案。例如,如果一个工件因为从不正确的源URI构建而被拒绝,那么修复方案可以是更新策略以允许该URI,或从正确的URI重新构建……Google早期的一个策略语言原型在表达策略时提供了很大的灵活性,但阻碍了提供可操作的错误消息……我们最终放弃了这种方法,转而使用一种策略非常有限的语言。