gpt4 book ai didi

C++ 自定义错误代码类或系统 errno

转载 作者:行者123 更新时间:2023-11-30 05:15:27 28 4
gpt4 key购买 nike

我们正处于大型项目的初始阶段,最初要做的事情之一是定义错误代码 b/w 不同的模块。以前我们使用系统 errno 作为错误代码并使用 strerror() 打印错误。这非常简单并且工作正常 [我们早期的大部分代码是 C 可能是 10% C++]。

在新项目中 [完全使用 C++],我很困惑我们是否应该遵循它。或者定义我们自己的错误类。

例如:

enum class ErrorCode {

FILE_EXIST = EEXIST,
ACCESS_DENIED = EACCESS,
...
};

const char *error_str (ErrorCode code)
{
switch (code) {
case ACCESS_DENIED: return "Access denied";
...
}
}

class Error {
Error (ErrorCode code) : _code (code){}
Error() : _code(0){}

void operator = (ErrorCode code);
bool operator == (ErrorCode code);
operator bool() {return _code != 0;}
const char *string() { return error_str(_code);}

private:
ErrorCode _code;
};

这只是一个带有一些 C++ 糖的包装器类。但是在定义了这个之后,我认为除了扩展的可能性和不必要地使事情变得冗长之外,它不会为 int/strerror() 添加任何值。我想与 errno 相比,上面的代码不会增加太多的性能损失,因为它里面只有一个 int。

需要建议 - 在您处理大型 C++ 项目的经验中,进展如何?

最佳答案

看看 system_error 中的 std::error_code,似乎做你想做的。 This是一个很好的教程,说明它是如何工作的。 This帖子还详细解释了它应该如何工作。

关于C++ 自定义错误代码类或系统 errno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43084317/

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