从模型的访问器抛出自定义Laravel异常时未调用方法render()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从模型的访问器抛出自定义Laravel异常时未调用方法render()相关的知识,希望对你有一定的参考价值。

我有一个render方法的自定义异常,当我抛出它时会被调用,例如从控制器访问,但是当我从访问器抛出它时不会被调用。

所以当我做这样的事情时

public function getFooAttribute()
{
   throw new CustomException();
}

并将dd()放入异常渲染方法

public function render()
{
    dd('render is called');
}

我没有结果。

在某些特定情况下,处理程序无法按预期工作吗?

UPD:如我所见,在View层上抛出的错误处理可能存在问题:https://github.com/laravel/framework/issues/24658

看起来我基本上有相同的问题,但没有找到解释。

答案

您的render方法需要接受一个像这样被调用的参数。

if (method_exists($e, 'render') && $response = $e->render($request)) {
    return Router::toResponse($request, $response);
}

以上是关于从模型的访问器抛出自定义Laravel异常时未调用方法render()的主要内容,如果未能解决你的问题,请参考以下文章

laravel异常处理

变量存在时未定义的变量 laravel

在 vuex 操作中调用时未定义路由器

SAX XML 解析器抛出空指针异常

处理来自 PHPUnit (Laravel 5.2) 的自定义异常

“SQLite.SQLiteConnection”的类型初始化器抛出异常