如何捕获提升asio boost :: system :: error_code将异常与其他异常分开?

Rel*_*lla 2 c++ sockets boost execution boost-asio

Boost asio有这样的socket连接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;
}
Run Code Online (Sandbox Code Playgroud)

我想要的只是尝试连接并捕获boost :: system :: error_code连接异常.只有它.我不需要再开车了.在它上面我需要返回-1.怎么办这样的事情?

Joh*_*ing 7

catch( const boost::system::system_error& ex )
{
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

请通过const引用来捕获.

  • 我知道这是旧的,但抛出的异常实际上是 boost::system::system_error,而不是 error_code 本身。 (2认同)