Curl Error Handling Example
December 9, 2024 ยท AI Conversations
curl_setopt($ch, CURLOPT_URL, $this->PushURL );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $FieldsString);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
//execute post
$result = curl_exec ($ch);
print_r($result);
//close connection
curl_close($ch);
put try catche
try {
$ch = curl_init();
if (!$ch) {
throw new Exception('Failed to initialize cURL.');
}
curl_setopt($ch, CURLOPT_URL, $this->PushURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $FieldsString);
// curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$result = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception('cURL error: ' . curl_error($ch));
}
if ($result === false) {
throw new Exception('cURL execution failed with no error message.');
}
print_r($result);
curl_close($ch);
} catch (Exception $e) {
echo 'Error: ' . $e->getMessage();
if (isset($ch) && is_resource($ch)) {
curl_close($ch);
}
}
### Explanation:
1. **`try` Block**: Contains the code that might throw exceptions, such as initializing and executing the cURL request.
2. **`Exception` Handling**:
– If `curl_init` fails, an exception is thrown.
– If `curl_exec` returns `false` or `curl_errno` has an error, another exception is thrown with a detailed error message.
3. **`catch` Block**: Handles the exceptions and outputs a meaningful error message using `$e->getMessage()`.
4. **Resource Cleanup**: Ensures the cURL handle is closed properly using `curl_close`.
This approach helps gracefully handle potential issues like network errors, misconfigured cURL options, or unexpected responses.