2010-11-19 116 views
2

Boost asio有这样的socket connect api。我有这样简单的代码:如何捕获提升asio boost :: system :: error_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; 
} 

我只想尝试连接并捕获boost :: system :: error_code连接异常。只有它。我不需要再犯。在它上面我需要返回-1。如何做这样的事情?

回答

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

请参考const引用。

+0

+1常量参考 – 2010-11-20 01:38:01

+0

请您详细说明一下吗?为什么const ref? – Jon 2015-12-01 14:54:33

+0

参考因为你不想复制。因为你不想改变它。 – 2015-12-01 21:56:19