Архив за Сентябрь, 2009
Отлов ошибок PECL класса HTTPRequest нет откликов
В модуле pecl_http есть очень удобный, но при этом не всегда хорошо задокументированный класс HTTPRequest. Одной из проблем, с которой я столкнулся при работе с ним, это то, что в случае ошибок при HTTP-соединениях, выбрасывались исключения с текстами:
(HttpInvalidParamException) Empty or too short HTTP message: ''
Понятное дело, для отладки они не подходят. Но, если вывести исключение полностью, то обычно там как-раз и были подробности проблемы:
exception 'HttpInvalidParamException' with message 'Empty or too short HTTP message: ''' in example.php:189 inner exception 'HttpRequestException' with message 'Timeout was reached; Operation timed out after 10000 milliseconds with 0 bytes received (https://example.ru/)' in example.php:160
Видно, что самое важное содержится в сообщении от inner exception. И его, оказывается, легко поймать, если поставить дополнительный блок catch на HTTPException, например:
try {
$request->send();
} catch (HttpException $ex) {
if (isset($ex->innerException)){
echo $ex->innerException->getMessage();
exit;
} else {
echo $ex;
exit;
}
}
Информация получена отсюда.