Skip to content

Latest commit

 

History

History
45 lines (37 loc) · 2.83 KB

exceptions.md

File metadata and controls

45 lines (37 loc) · 2.83 KB

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

Исключения, генерируемые библиотекой.

  • InvalidArgumentException - при передаче в методы некорректных параметров.
  • UnexpectedValueException - при получении от API Моего Склада нестандартных ответов. В нормальной работе возникать не должно. Если вы с ним столкнулись - опишите, пожалуйста, в issues обстоятельства.
  • Evgeek\Moysklad\Exceptions\RequestException - обёртка для исключений HTTP запросов, генерируемых Request Sender. Исходное исключение можно получить при помощи getPrevious().
try {
    $ms->query()->entity()->product()->method('new')->send('PUT');
} catch (RequestException $e) {
    $previous = $e->getPrevious();
    echo $previous->getMessage();
}

При использовании стандартной для библиотеки GuzzleSenderFactory, ответы с HTTP-кодами, отличными от 2xx и 3xx, выбрасывают исключения. Получить объекты запроса и ответа, а также тело ответа можно при помощи методов исключения Guzzle (см. документацию). Помните, что тело ответа отдаётся как stream, поэтому получить из него контент можно только один раз.

try {
    $ms->query()->entity()->product()->method('new')->send('PUT');
} catch (RequestException $e) {
    /** @var \GuzzleHttp\Exception\ClientException $previous */
    $previous = $e->getPrevious();
    $request = $previous->getRequest();
    $response = $previous->getResponse();
    $content = $response->getBody()->getContents();
}

Аналогичного эффекта можно добиться, использовав методы исключения библиотеки. Контент в этом случае форматируется установленным форматтером и кэшируется (можно запросить многократно).

try {
    $ms->query()->entity()->product()->method('new')->send('PUT');
} catch (RequestException $e) {
    $request = $e->getRequest();
    $response = $e->getResponse();
    $content = $e->getContent();
}
<< Вспомогательные инструменты Оглавление -