Обробка винятків за допомогою хелпера rescue у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 березня, 2025
Функція rescue у Laravel забезпечує елегантний підхід до управління винятками в коді, дозволяючи продовжувати операції навіть у випадку помилки. Дізнайтеся, як вона може підвищити надійність вашого коду та спростити обробку помилок у нашій статті

Функція 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