обработка исключений httprequest php

#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:

как я могу перехватить исключение?

Чтобы перехватить исключение, вам нужно знать имя класса исключения. Какое имя класса исключения вы хотели бы перехватить?