РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
948 of 1392 menu

Функция rescue

Функция rescue позволяет выполнить переданное замыкание и, если при его выполнении возникнет исключение, вернуть значение по умолчанию вместо выбрасывания ошибки. Первым параметром передаётся замыкание с кодом для выполнения, вторым параметром - значение по умолчанию, которое будет возвращено при возникновении исключения. Третьим параметром можно передать логическое значение, указывающее, нужно ли логировать возникшее исключение.

Синтаксис

<?php rescue($callback, $default = null, $report = false); ?>

Пример

Давайте попробуем выполнить код, который может вызвать исключение, и вернём значение по умолчанию в случае ошибки:

<?php $res = rescue(function () { return 10 / 0; }, 'error'); echo $res; ?>

Результат выполнения кода:

"error"

Пример

Давайте используем функцию rescue для безопасного парсинга данных из внешнего API, когда сетевой запрос может завершиться ошибкой:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesLog; class UserController extends Controller { public function getExternalData() { $data = rescue(function () { $response = file_get_contents('https://api.example.com/data'); return json_decode($response, true); }, ['status' => 'fallback'], true); return $data; } } ?>

Пример

Давайте выполним операцию с базой данных, которая может завершиться ошибкой, и в случае неудачи вернём пустую коллекцию:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateSupportCollection; class ArticleController extends Controller { public function index() { $articles = rescue(function () { return Article::where('status', 'published')->get(); }, collect([])); return $articles; } } ?>

Пример

Давайте используем функцию rescue с логированием ошибок для отладки проблемного кода:

<?php namespace AppHttpControllers; use IlluminateSupportFacadesLog; class ReportController extends Controller { public function processData() { $result = rescue(function () { $data = ['a', 'b', 'c']; return $data[5]; }, 'default value', true); Log::info('Process result: ' . $result); return $result; } } ?>

Результат выполнения кода:

"default value"

Смотрите также

  • функция throw_if,
    которая выбрасывает исключение при выполнении условия
  • функция throw_unless,
    которая выбрасывает исключение, если условие не выполнено
  • функция report,
    которая отправляет исключение в обработчик ошибок
  • функция optional,
    которая позволяет безопасно вызывать методы на потенциально нулевых объектах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить