2010-11-19 28 views
2

ブーストアシオは、socket connect apiです。boost 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; 
} 

私が欲しいのは、接続して、キャッチブースト::システム:: ERROR_CODE例外を接続しようとすることです:私は、このような単純なコードを持っています。それだけ。私はもうキャッチする必要はありません。それに-1を返す必要があります。そんなことをする方法?

答えて

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

const参照でキャッチしてください。

+0

+1参照用 –

+0

詳細を教えていただけますか?なぜconst refですか? – Jon

+0

Refはコピーを作成しないためです。あなたがそれを変更したくないので、Const。 –

関連する問題