#php #http #exception
#php #http #исключение
Вопрос:
В случае, если запрос не может быть выполнен, как я могу перехватить исключение?
Я до сих пор писал это, но не повезло.
$url = 'http://localhost:49000/';
//create the httprequest object
try{
$httpRequest_OBJ = new httpRequest($url, HTTP_METH_POST, $options);
}catch(HttpException $e){
echo $e;
}
Комментарии:
1. Какую ошибку вы получаете? Что значит, вам не повезло? Это похоже на действительную обработку исключений.
2. Вы должны включить ошибки PHP: php.net/manual/en/errorfunc.configuration.php
3. В вашем php.ini есть ли у вас error_reporting = E_ALL и display_errors = On ? Вы должны получить больше информации, чем «Внутренняя ошибка сервера 500».
4. error_reporting(0); у меня это включено в моем контроллере
5. error_reporting(0) удаляет все ошибки. Удалите это из вашего контроллера. Вы должны использовать имена констант для ясности, но в любом случае вы можете увидеть, какие их числовые значения здесь: php.net/manual/en/errorfunc.constants.php
Ответ №1:
У меня была такая же проблема, вы должны убедиться, что исключение находится в пространстве имен.
Что я сделал, так это:
try {
//Request here
} catch (HttpException $e) {
//Handle exception
} catch (Exception $e) {
//Just in case
}
Также полезно заметить, что указано в этой статье http://www.mkfoster.com/2009/01/06/how-to-pecl-http-request-exception-and-error-handling / о внутреннем исключении, на случай, если вы хотите, чтобы сообщение было возвращено исключением.
Кроме того, существует директива php.ini, которая заставляет HttpRequest всегда генерировать исключение http://br.php.net/manual/en/http.configuration.php http.only_exceptions=1
Ответ №2:
как я могу перехватить исключение?
Чтобы перехватить исключение, вам нужно знать имя класса исключения. Какое имя класса исключения вы хотели бы перехватить?