如何捕获 boost asio boost::system::error_code 连接异常与其他异常?

发布于 2024-10-03 19:20:46 字数 770 浏览 6 评论 0原文

Boost asio有这样的 socket connect api 。我有这样简单的代码:

try
{
    std::string addr;
    std::string port;
    sscanf(tcpUrl.c_str(), "tcp://%[^:]:%d", &addr, &port);

    boost::asio::io_service io_service;

    tcp::resolver resolver(io_service);
    tcp::resolver::query query(tcp::v4(), addr.c_str(), port.c_str());
    tcp::resolver::iterator iterator = resolver.resolve(query);

    tcp::socket s(io_service);
    s.connect(*iterator);
    Sleep(250);
    s.close();
}
catch (std::exception& e)
{
    return -1;
}

我想要的只是尝试连接并捕获 boost::system::error_code 连接异常。只有它。我不需要再缓存了。我需要返回-1。这样的事该怎么办呢?

Boost asio has such socket connect api. I have such simple code:

try
{
    std::string addr;
    std::string port;
    sscanf(tcpUrl.c_str(), "tcp://%[^:]:%d", &addr, &port);

    boost::asio::io_service io_service;

    tcp::resolver resolver(io_service);
    tcp::resolver::query query(tcp::v4(), addr.c_str(), port.c_str());
    tcp::resolver::iterator iterator = resolver.resolve(query);

    tcp::socket s(io_service);
    s.connect(*iterator);
    Sleep(250);
    s.close();
}
catch (std::exception& e)
{
    return -1;
}

All I want is to try to connect and catch boost::system::error_code connect exception. Only it. I do not need to cach any more. and on it I need to return -1. How to do such thing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想你的星星会说话 2024-10-10 19:20:46
catch( const boost::system::system_error& ex )
{
  return -1;
}

请通过常量引用来捕获。

catch( const boost::system::system_error& ex )
{
  return -1;
}

Please catch by const reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文