php guzzle -- Как отключить выбрасыване Excepion-ов

Guzzle - библиотека для отправки HTTP-запросов в php. Как установить и начать работать можно посмотреть здесь.

Отключить выбрасыване Excepion-ов

Можно путём добавления опции exceptions в массив $options:

$getQuestions = $client->get("/questions", [
            'headers' => [], // здесь можно передать заголовки
            'json' => [], // здесь можно передать тело запроса
            'exceptions' =>false // эта опция отключит автоматическое выбрасывание исключений guzzle-ом
        ]);

Или можно прямо при создании объекта $client, если эта опция универсальна для вашего проекта:

  • Для Guzzle 3
    $client = new \Guzzle\Http\Client($httpBase, array(
      'request.options' => array(
         'exceptions' => false,
       )
    ));
  • Для Guzzle 5.3
    $client = new \GuzzleHttp\Client(['defaults' => [ 'exceptions' => false ]] );
  • Для Guzzle 6
    $client = new \GuzzleHttp\Client(['http_errors' => false]); 

Для чего это нужно?

Если Вы самостоятельно обрабатываете ошибки, всю необходимую информацию Вы можете получить из ответа, который будет помещён в переменную $getQuestions. При стандартном поведении Guzzle это сделать невозможно, т.к. скрипт умирает на стадии запроса $client->get(). Чтобы добраться до объекта Response, придётся отключить выбрасывание исключений по умолчанию.

Или можно ловить Exception, выбрасываемый Guzzle-ом. Как это сделать, читайте в официальной документации.

Источники

vedro-compota's picture

вообще-то надо сделать так чтобы исключения не появлялись, или перехватывать их.

_____________
матфак вгу и остальная классика =)

melisa's picture

об этом и говорит данная статья