Catch Boost异常

时间:2013-07-19 07:57:40

标签: c++ exception boost exception-handling boost-asio

icmp::resolver::query query(icmp::v4(), host, "");destination = *resolver.resolve(query);的帮助下解析主机名时,如果无法解析主机名,我会收到异常。现在我想抓住那个例外,但它不会被抓住。我目前的代码是:

        icmp::resolver::query query(icmp::v4(), host, "");  
        try
        {
            destination = *resolver.resolve(query);                                         
        }
        catch(boost::exception & e)
        {
             //Print exception
        } 
        catch (...) {
            //print exception   
        }

我做错了什么?

更新:该应用程序在Visual Studio 2012中生成,并具有C ++非托管和托管(.net)代码。 boost的版本是1.54.0

1 个答案:

答案 0 :(得分:0)

我已经解决了它而没有使用icmp :: resolver函数的重载函数,它给出了一个错误代码。然后我在迭代器上得到一个空指针异常并解决它没有指向resolver.resolve(query,ec)

的指针
        {
            icmp::resolver::query query(icmp::v4(), host, "");
            iter = resolver.resolve(query, ec);
            if (!ec) 
            {
                destination = *iter;
            } 
            else 
            {
                ec.value();
            }
       }