哪些Boost.Asio调用返回哪些Boost错误代码/条件
Which Boost error codes/conditions are returned by which Boost.Asio calls?
我目前正在编写一个使用Boost.Asio作为底层套接字API的TCP I/O工具,我注意到Boost.Acio似乎缺乏关于每个单独操作(例如函数/方法调用或异步操作(可能导致特定Boost错误代码/条件的文档。我所能找到的只是错误代码API和一些非正式的错误代码列表,它们都没有将特定代码与特定操作关联起来。
这种明显缺乏文档的情况令人沮丧,因为当你不知道可能的故障模式时,很难编写健壮的代码。甚至不可能给出例子,因为由于缺乏文件,我甚至不确定哪些操作可能会产生哪些问题。
相比之下,POSIX套接字API在记录故障模式方面相当不错。特别是,它列出了每个函数调用可以生成的errno和返回值。
这个Boost.Asio文档是否存在于某个地方,而我只是没有看到它?还是我应该只是猜测、逆向工程或收集有关Boost.Asio API各个部分故障模式的经验数据,以便能够编写使用它的健壮代码?
通常,当Boost.Asio依赖于操作系统实现时,它既不会指定可能发生错误的条件,也不会指定可能返回的错误代码。在出现故障时,如果应用程序能够接收到boost::system::error_code
,Boost.Asio将填充它,例如用于异步操作或带有error_code
参数的同步操作过载;否则将抛出包含CCD_ 3的异常。文件说明如下:
除非另有说明,当异步操作的行为被定义为"好像"由POSIX函数实现时,将使用类型为
error_code
的值调用处理程序,该值对应于POSIX为该函数描述的故障条件(如果有的话(。否则,将使用反映操作系统错误的实现定义的error_code
值来调用处理程序。异步操作不会因指示信号(POSIX
EINTR
(中断的错误条件而失败。异步操作不会因与非阻塞操作(POSIXEWOULDBLOCK
、EAGAIN
或EINPROGRESS
;WindowsWSAEWOULDBLOCK
或WSAEINPROGRESS
(相关的任何错误条件而失败。
如果错误处理取决于确切的错误代码,那么通常可以使用BSD API映射文档来确定正在进行的操作系统调用。然后可以使用适当的操作系统文档来确定发生错误的条件和值。错误代码和Boost.Asio错误代码之间的映射位于asio/error.hpp
内,但映射通常相当直接。
- 错误处理.将系统错误代码映射到泛型
- 为什么我在使用void函数时得到错误代码C2276
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 逻辑运算符上出现错误代码 a')'
- 'val' Arduino 错误代码之前的预期'('
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 根据 GetLastError 直接写入磁盘会导致错误代码 5
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 使用另一个函数调用一个函数(都在类中)时出现问题.没有错误代码C++
- 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- 从 C++ 调用 cURL 命令会返回意外的错误代码,如 1792 和 6656
- Boost Spirit代码,可与msvc编译,但与gcc编译错误
- boost::shared_ptr代码中的多线程错误
- windows上的boost.asio错误代码依赖于平台
- 如何正确地反检查Boost错误代码
- 关于使用cmake和boost编译c++代码的错误
- 在旧的开源项目中错误地构建boost spirit代码
- 我应该从Boost::filesystem::copy中看到哪些错误代码?
- 哪些Boost.Asio调用返回哪些Boost错误代码/条件