这个问题更具哲学性,而不是技术性,所以我希望你不要介意我故意省略正在发生的事情的困惑细节。
我在一个为特定协议(protocol)实现服务器的团队中,关于如何区分来自客户端的错误(例如,在打开之前请求读取)和编程错误(例如,传递到文件系统的未初始化文件句柄)。该协议(protocol)具有将错误返回给客户端的机制。不幸的是,协议(protocol)代码与我们的内部错误代码不太匹配。
到目前为止,我们在进出辅助函数时一直维护着两个不同的错误代码,每次返回时都会检查这两个错误代码,但这看起来很麻烦且不优雅,我们正在考虑重构整个错误系统。
我想问你,互联网,你过去是如何处理这个问题的?有没有我们还没有偶然发现的处理并行错误代码的优美、规范的方法?
可能值得注意的是,我们直接使用 C 语言工作,因此我们既不能使用异常,也不能构建错误类的层次结构来解决问题。
谢谢
--丹
最佳答案
也许我不明白你的问题,但我处理几组不同的错误代码的技术是在“主错误代码”中为它们分配不同的范围。因此,如果您的协议(protocol)错误在 0-999 范围内,则您的内部错误可能是 1000-1999。您可以编写函数或宏来测试错误代码所在的范围,并进行算术将错误代码从其原始方案(可能基于 0)转换为主错误代码分配中的范围,然后再转换回来再次。
即使您的错误代码系统之一使用完整的 32 位数字而不是较小的范围,您也可以通过使用 64 位整数作为主错误代码来解决此问题。
关于c - 区分 C 中的客户端错误和程序员错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243694/