Как избежать выхода из программы после отказа в соединении с Boost Asio и C / C ++

На данный момент я использую Boost Asio для подключения к серверу через TCP.

Я использую условный регистр, чтобы решить, должно ли приложение запускаться или нет соединение с сервером; он отлично работает, но проблема в том, что если я попытаюсь подключиться к серверу, когда сервер не работает, произойдет сбой приложения с этой ошибкой:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what():  Connection refused

Это код, который я использую:

    case CONNECTION:
 // Connect to the server
 using boost::asio::ip::tcp;
 boost::asio::io_service io_service;
 tcp::resolver resolver(io_service);
 tcp::resolver::query query(tcp::v4(), server, boost::lexical_cast<string>(porta));
 tcp::resolver::iterator iterator = resolver.resolve(query);
 tcp::socket s(io_service); 
 s.connect(*iterator); 

Я бы хотел сохранить живое мое приложение с его нормальным поведением и выводит только предупреждение о сбое соединения.

Как я могу обработать это исключение?

7
задан Sam Miller 6 June 2011 в 13:05
поделиться