我正在开发一个C ++程序,它使用cURL库,它是用简单的C语言编写的。 当我尝试使用cURL句柄连接到错误的URL地址时,我得到了一个例外:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
并且我的程序终止而不是跳过此URL并继续下去。 这是我的代码片段:
CURL* curl;
curl_easy_setopt( curl, CURLOPT_URL, "incorrect URL" );
curl_easy_perform( curl ); // this method throws the expection
我试着像这样处理它:
try{
curl_easy_perform( curl );
} catch { std::logic_error &e){
return -1; // skip this URL and go futher
}
但程序仍然终止,似乎异常处理得不好。
包含文件“stdexcept”。
有谁知道更多关于此错误以及如何正确捕获此异常,以便我的程序可以继续工作?
答案 0 :(得分:0)
我不是libcurl专家,但在调用下两个curl函数之前,您是否需要将curl_easy_init()
的结果分配给curl
变量?
ETA,以下代码不会为我抛出异常。 curl_easy_perform
返回CURLE_COULDNT_RESOLVE_HOST (6)
。
#include <curl/curl.h>
#include <iostream>
int main()
{
CURL* curl = curl_easy_init();
std::cout << curl_easy_setopt(curl, CURLOPT_URL, "incorrect URL") << std::endl;
std::cout << curl_easy_perform(curl) <<std::endl;
}