В моем PHP-проекте я использую Guzzle для выполнения множества различных API-запросов.Для обработки всех исключений каждый вызов API заключен в блок try-catch.Пример:
try {
$res = $client->get($url, [
'headers' => [
'Authorization' => "bearer " . $jwt,
]
]);
} catch (ClientException $clientException) {
// Do stuff
} catch (ConnectException $connectException) {
// Do stuff
}catch (RequestException $requestException){
// Do stuff
}
Для каждого запроса обработка исключений одинакова, но фактический блок выполнения сильно отличается и не может быть просто описан массивом опций.
Есть лиспособ создать функцию / класс, способный обернуть пользовательский блок выполнения в ту же обработку try-catch?
Единственные варианты, которые я придумал, - это использовать интерфейс с расширенной функцией execution()
каждым дочерним элементом и функцией run()
, которая имеет блоки try-catch и просто вызывает $this->execution()
внутри блока исполнения.Это бы сработало, но я нашел слишком многословным создание целого нового класса для каждого отдельного вызова API, который используется только в одной точке моего проекта.
Есть ли лучшее / менее подробное решение, чтобы избежать повторения кодатой же обработки исключений?