在 C++ 中将错误返回给调用者而不是立即抛出错误是一种好习惯吗?

fro*_*air 0 c++

像在 Go 中那样将错误返回给调用者函数是否被认为是一种好习惯,还是我的程序在遇到错误时应该抛出错误?

ein*_*ica 5

在 C++ 中存在不同的错误处理常见做法 - 因为它是一种多范式语言。例如:

  • 返回状态/错误代码而不是结果。
  • 只返回结果,出错时抛出异常。
  • 返回值或错误对象,例如std::expected

这些中的每一个都有优点和缺点。最重要的是在你的程序中保持一致,并与调用你函数的人协调* - 这样你才能满足他们的需求。

有关当前选项和未来潜在替代方案的详细介绍,请参阅 Brand & Nash 在年度 C++ 会议 CppCon 上的演讲:

CppCon 2018:“什么可能出错?:期望和例外的故事”