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

Исключение HttpException

Исключение HttpException предназначено для генерации HTTP ошибок с указанным кодом состояния и пользовательским сообщением. Оно автоматически преобразуется в соответствующий HTTP ответ с правильным статус-кодом. Первым параметром передаётся код состояния HTTP, вторым - сообщение об ошибке, третьим - массив заголовков для ответа.

Синтаксис

<?php throw new HttpException($statusCode, $message, $headers); ?>

Пример

Давайте выбросим исключение с кодом 404 в контроллере, если статья не найдена:

<?php namespace AppHttpControllers; use AppModelsArticle; use SymfonyComponentHttpKernelExceptionHttpException; class ArticleController extends Controller { public function show($id) { $article = Article::find($id); if (!$article) { throw new HttpException(404, 'Article not found'); } return view('article.show', ['article' => $article]); } } ?>

Пример

Давайте выбросим исключение с кодом 403 и дополнительными заголовками для запрета доступа к ресурсу:

<?php namespace AppHttpControllers; use SymfonyComponentHttpKernelExceptionHttpException; class AdminController extends Controller { public function dashboard() { if (!auth()->user()->isAdmin()) { throw new HttpException( 403, 'Access denied. Admin rights required.', ['X-Reason' => 'Admin only'] ); } return view('admin.dashboard'); } } ?>

Пример

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

<?php namespace AppHttpControllers; use SymfonyComponentHttpKernelExceptionHttpException; class ApiController extends Controller { public function getData() { $limitReached = true; if ($limitReached) { throw new HttpException(429, 'Too many requests. Please try again later.'); } return response()->json(['data' => ['a', 'b', 'c']]); } } ?>

Пример

Давайте перехватим исключение и обработаем его с помощью обработчика исключений:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use Throwable; use SymfonyComponentHttpKernelExceptionHttpException; class Handler extends ExceptionHandler { public function render($request, Throwable $e) { if ($e instanceof HttpException) { if ($e->getStatusCode() === 404) { return response()->view('errors.404', [], 404); } if ($e->getStatusCode() === 403) { return response()->view('errors.403', [], 403); } } return parent::render($request, $e); } } ?>

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

"Custom 404 error page rendered"

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

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить