C++ REST SDK 遇到“_REPORT_PPLTASK_UNOBSERVED_EXCEPTION”未处理异常
try
{
auto response = client.request(methods::POST, builder.to_string(), strPostData2, L"application/json").then([](http_response response)
{
if ( response.status_code() == status_codes::OK )
{
try
{
std::wstring obj1 = response.extract_string().get();
rapidjson::Document doc;
doc.Parse<0>(WChar2Ansi(obj1.c_str()).c_str());
if ( doc.GetParseError() )
{
return -1;
}
std::string strError = getDataValueStr(&doc,"error");
std::string strMsg = getDataValueStr(&doc,"msg");
//提示消息
TCHAR szDescribe[128]=TEXT("");
_sntprintf(szDescribe,CountArray(szDescribe),TEXT("收到rank/setscore 响应消息 msg:%s"), strError.c_str());
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
return 0;
}
catch (const http_exception& e)
{
std::cout << e.what() << std::endl;
}
}
}).then([](...){});
}
catch (const std::system_error& e)
{
std::cout << e.code() << e.what() << std::endl;
return -1;
}
catch (const std::exception& e)
{
std::cout << e.what() << std::endl;
return -1;
}
catch(...)
{
//...
return -1;
}
return 0;
如果这里不阻塞的使用then,那么访问一个不可达地址时,就无法捕捉异常,报一个_REPORT_PPLTASK_UNOBSERVED_EXCEPTION的问题。而使用get方法阻塞在这里,又不是我的初衷。因为这段代码时写在服务器
线程中,可能有很多任务等待处理,我阻塞在这里等待response,很影响我的服务器效率。