同步I/O函数
Boost.Asio中的每个同步I/O函数都有两种处理错误的重载方式:第一种会抛出异常,第二种则通过引用返回错误(返回值方法)。
当Boost.Asio函数抛出异常时,它会抛出继承自`std::runtime_error`异常类的`boost::system::system_error`实例。
要通过引用返回错误,会使用`boost::system::error_code`的实例。
异常处理方式:
try
{
socket.connect(endpoint);
}
catch(boost::system::system_error const& e)
{
std::cerr << e.what() << "\n";
}
您可以通过调用`code()`成员函数从`system_error`中检索`error_code`:
catch(boost::system::system_error const& e)
{
boost::system::error_code error = e.code();
std::cerr << error.message() << "\n";
}
如果您不想处理异常,可以使用返回值重载方式:
boost::system::error_code error;
socket.conn
本文介绍了Boost.Asio库在处理错误时的两种方式:同步I/O函数通过异常或返回值抛出`boost::system::system_error`,而异步I/O函数通过将`error_code`传递给完成处理程序。详细讨论了如何从`error_code`获取错误信息,以及在面对文件末尾错误时的处理策略。
订阅专栏 解锁全文
8472

被折叠的 条评论
为什么被折叠?



