Как отловить исключение boost asio boost :: system :: error_code отдельно от других исключений? - PullRequest
2 голосов
/ 20 ноября 2010

Boost Asio имеет такой разъем подключения 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. Как это сделать?

1 Ответ

6 голосов
/ 20 ноября 2010
catch( const boost::system::system_error& ex )
{
  return -1;
}

Пожалуйста, ловите по константной ссылке.

...