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

HttpResponseException

Класс HttpResponseException предназначен для прерывания нормального потока выполнения приложения и немедленной отправки сформированного HTTP-ответа клиенту. В конструктор исключения передаётся объект ответа Response, который будет отправлен пользователю. Это особенно полезно в middleware, контроллерах или сервисных классах, когда требуется быстро вернуть JSON-данные, редирект или представление без выполнения дальнейшего кода.

Синтаксис

<?php throw new HttpResponseException($response); ?>

Параметр $response может быть экземпляром классов Response, JsonResponse или RedirectResponse.

Пример

Вернём JSON-ответ с ошибкой авторизации прямо из контроллера:

<?php namespace App\Http\Controllers; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Http\Exceptions\HttpResponseException; class UserController extends Controller { public function profile(Request $request) { if (!$request->user()) { $response = new JsonResponse([ 'error' => 'User not authenticated' ], 401); throw new HttpResponseException($response); } return $request->user(); } } ?>

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

{ "error": "User not authenticated" }

Пример

Применим исключение в middleware для проверки прав доступа и перенаправления:

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Exceptions\HttpResponseException; class CheckAgeMiddleware { public function handle(Request $request, Closure $next) { if ($request->input('age') < 18) { $redirect = new RedirectResponse('/underage'); throw new HttpResponseException($redirect); } return $next($request); } } ?>

После выбрасывания исключения пользователь будет перенаправлен на страницу '/underage' без выполнения остальных действий в запросе.

Пример

Вернём HTML-представление в качестве ответа при ошибке валидации в сервисном классе:

<?php namespace App\Services; use Illuminate\Http\Response; use Illuminate\Http\Exceptions\HttpResponseException; use Illuminate\Support\Facades\View; class PostService { public function create(array $data) { if (empty($data['title'])) { $html = View::make('errors.custom', [ 'message' => 'Title is required' ])->render(); $response = new Response($html, 400); throw new HttpResponseException($response); } // Логика сохранения поста return true; } } ?>

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

<!-- Содержимое представления errors.custom --> <div>Error: Title is required</div>

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

  • исключение HttpException,
    которое используется для генерации стандартных HTTP-ошибок с кодом состояния
  • исключение NotFoundHttpException,
    которое выбрасывается при отсутствии ресурса
  • исключение AccessDeniedHttpException,
    которое сигнализирует о недостатке прав доступа
  • класс Handler,
    который отвечает за обработку всех исключений в приложении
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить