php 为什么laravel中ExceptionHandler中的render函数不执行?

wfypjpf4  于 2023-05-21  发布在  PHP
关注(0)|答案(3)|浏览(190)

我想显示页面500 internal server error页面,但它不是显示报告或渲染,而是显示典型的Laravel异常视图和错误消息。

public function report(Exception $exception)
{
    parent::report($exception);
}

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $exception
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $exception)
{

  //  $exception = FlattenException::create($exception);
    $statusCode = $exception->getStatusCode($exception);
    dd($statusCode);

    if ($statusCode === 404 or $statusCode === 500) {
        return response()->view('errors.' . $statusCode, [], $statusCode);
    }
    return parent::render($request, $exception);
}
wfauudbj

wfauudbj1#

如果你看到的是500错误而不是500错误页面,那是因为应用程序处于调试模式。
.env文件中编辑以下行

APP_DEBUG=true

成为

APP_DEBUG=false
svmlkihl

svmlkihl2#

你能检查一下你的bootstrap/app.php文件,看看异常处理程序是否被正确绑定了吗?默认配置如下所示。
前阵子我写了一篇关于在Larvel中实现自定义异常处理程序的文章,它可能包含一些对你的问题有用的信息。

m3eecexj

m3eecexj3#

由于这个问题相对较新,我假设您正在起诉Laravel版本7或8。这是因为你的render函数:

function render($request, Exception $exception)

在原始ExceptionHandler类(您的Handler类从其扩展而来)中,render函数如下所示:

public function render($request, Throwable $e);

父类需要第二个参数为Throwable类型,但您在子类中使用Exception类型。

相关问题