为什么在laravel 6.x全局中间件使用throw捕获错误报500错误?

为什么在laravel 6.x全局中间件使用throw捕获错误报500错误?

代码如下

app\Http\Middleware\CheckPermission.php

<?php


namespace App\Http\Middleware;


use Closure;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;

class CheckPermission
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (true) {
            throw new UnauthorizedHttpException("登录状态失效");
        }

        return $next($request);
    }
}

Kernel.php

/**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \App\Http\Middleware\TrustProxies::class,
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        // 自定义跨域
        \App\Http\Middleware\CrossHttp::class,
        // 自定义检验权限
        \App\Http\Middleware\CheckPermission::class,
    ];

报错如下

只要我不使用全局中间件,使用路由中间件就不会报http状态码500(ps:路由那些是对的)。贴图如下,所以想请教各位大佬,我要在全局中间件怎捕获错误呢?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 1

@zhaojjiang 那为什么路由中间件的时候不需要try{}catch{}.不是在最上层会捕获异常吗?

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!