Функція rescue в Laravel пропонує елегантний спосіб управління потенційними винятками у вашому коді, дозволяючи продовжувати виконання операцій навіть у випадку виникнення помилок
Ця функція приймає кілька параметрів для гнучкої реалізації:
// Виконати код з замовчуванням null
return rescue(function () {
return $this->method();
});
// Вказати значення за замовчуванням
return rescue(function () {
return $this->method();
}, false);
// Використати функцію-запасний варіант
return rescue(function () {
return $this->method();
}, function () {
return $this->fallbackMethod();
});
Цей підхід особливо корисний при роботі з зовнішніми сервісами:
class ApiService
{
public function fetchAccountData($accountId)
{
return rescue(function () use ($accountId) {
$response = Http::timeout(3)->get("api.external.com/accounts/{$accountId}");
$response->throw();
return $response->json();
}, [
'id' => $accountId,
'name' => 'Unknown',
'status' => 'error',
'last_checked' => now()
]);
}
public function processReports()
{
return rescue(
function () {
$reports = $this->getReports();
$processed = [];
foreach ($reports as $report) {
$processed[] = $this->processReport($report);
}
return $processed;
},
function () {
Log::warning('Не вдалося обробити звіти, використовуючи кешовані дані');
return Cache::get('last_successful_reports', []);
}
);
}
}
Функція rescue підвищує надійність коду, забезпечуючи вбудовані механізми відновлення помилок, не ускладнюючи логіку вашого застосунку широкими блоками try-catch