gpt4 book ai didi

errno - 扔,返回还是错误?

转载 作者:行者123 更新时间:2023-12-01 08:42:51 25 4
gpt4 key购买 nike

我正在创建一个系统。我想知道的是,如果一个消息不受支持,它应该怎么做?我应该说不受支持的消息吗?我应该返回 0 还是 -1?或者我应该设置一个 errno (base->errno_)。有些消息我不关心是否有错误(例如 setBorderColour)。其他我会(添加文本或如果我创建保存 cmd 则可能保存)。

我想知道 1) 快速编码 2) 调试 3) 扩展和维护的最佳方法是什么。我可能会进行第三次调试,它很难调试 ATM,但那是因为有很多我没有填写的缺失代码。实际的错误并不难纠正。让用户知道有错误的最佳方式是什么?

系统的工作原理与此类似,但并不完全相同。这是 C 风格,mycode 有一堆内联函数,将 settext(const char*text){ 包装到 msg(this, esettext, text)

Base base2, base;
base = get_root();
base2 = msg(base, create, BASE_TYPE);
msg(base2, setText, "my text");
const char *p = (const char *)msg(base2, getText);

最佳答案

通常,如果是 C++,则首选异常,除非性能至关重要,或者除非您可能在不支持异常的环境(例如嵌入式平台)中运行。到目前为止,异常是调试的最佳选择,因为它们在发生时非常明显并且被忽略。此外,异常(exception)是 self 记录的。它们有自己的类型名称,通常包含解释错误的消息。返回代码和 errno 需要单独的代码定义和某种带外方式来传达代码在任何给定上下文(例如手册页、注释)中的含义。

为了快速编码,返回代码可能更容易,因为它们不涉及潜在地定义您自己的异常类型,而且错误检查代码通常不像异常那样冗长。但当然最大的风险是,默默地忽略错误返回码要容易得多,这会导致问题在发生很久之后才被注意到,从而使调试和维护成为一场噩梦。

尽量避免使用 errno,因为它本身很容易出错。它是全局的,所以你永远不知道是谁在重置它,而且它绝对不是线程安全的。

编辑:我刚刚意识到你的意思是一个 errno 成员变量,而不是 C 风格的 errno。更好的是它不是全局的,但是您仍然需要额外的构造来使其线程安全(如果您的应用程序是多线程的),并且它保留了返回码的所有问题。

关于errno - 扔,返回还是错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/307471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com