使用cURL lib时在C / C ++中捕获异常

时间:2011-12-31 03:55:16

标签: c++ exception curl

我正在开发一个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”。

有谁知道更多关于此错误以及如何正确捕获此异常,以便我的程序可以继续工作?

1 个答案:

答案 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;
}