我们应该如何实现std::error_code兼容的API
How should we implement std::error_code compatible API?
假设我们正在编写一个库,并且我们希望对错误和异常提供细粒度控制:
void foo();
void foo(std::error_code&);
因此,我们将foo()
实现为抛出std::system_error
,并让foo(std::error_code&)
捕获所有异常并提取error_code。
还是我们将foo(std::error_code&)
实现为从不抛出函数,并根据错误代码的存在在foo()
中抛出函数?
boost
库与boost::system::error_code
一起工作,但有例外,因此,我认为您可以定位于此库。例如boost::asio::basic_stream_socket::connect有两个版本
void connect(
const endpoint_type & peer_endpoint);
boost::system::system_error失败时抛出。
boost::system::error_code connect(
const endpoint_type & peer_endpoint,
boost::system::error_code & ec);
ec设置为指示发生了什么错误(如果有的话)。
但我认为这也取决于foo
的作用。
异常越少越好,所以应该使用第二个。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio Code "undefined reference to `WinMain@16'"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 如何在安装了 WSL 的 Visual Studio Code 中修复"g++: error: helloworld.cpp: No such file or directory"?
- 动态数组"error code unspecified launch failure"
- 创建类对象时,我得到"error: linker command failed with exit code 1"
- Boost asio & ssl & error code
- CreateFileMapping error code 8
- OpenGL OBJ Loader Error: EXC_BAD_ACCESS code = 1
- Error code 2556,2040
- 创建 DirectX 10 设备和交换链时的' Error Code: E_FAIL '
- 谷歌模拟的EXPECT_CALL导致"unknown file:error: SEH exception with code 0xc0000005 thrown in the test body"