无法抛出未实现Throwable的对象

时间:2017-09-27 15:14:45

标签: laravel laravel-5 laravel-middleware laravel-5.5 laravel-response

我正在使用Laravel 5.5。有以下课程

  

供应商\ laravel \框架\ SRC \照亮\路由\中间件\ ThrottleRequests.php

使用方法名称:buildException

在Laravel 5.4中,我能够像下面这样在这个方法中返回JSON。

protected function buildException($key, $maxAttempts)
{
    $retryAfter = $this->getTimeUntilNextRetry($key);
    $headers = $this->getHeaders(
        $maxAttempts,
        $this->calculateRemainingAttempts($key, $maxAttempts, $retryAfter),
        $retryAfter
    );
    return response()->json('429 Too many requests');
}

当我尝试使用Laravel 5.5在上述方法中返回JSON时,它说

  

无法抛出未实现Throwable的对象

现在可以肯定的是,我如何在Laravel 5.5中为上述方法返回JSON

1 个答案:

答案 0 :(得分:1)

嗯,你现在不能这样做了。您需要返回异常类。但你可以做的是返回一些自定义异常类,然后在`{1}}中使用`render方法添加:

app/Exceptions/Handler.php

当然,如果你真的需要,你可以添加自己的if ($e instanceof YourCustomException) { return response()->json('429 Too many requests'); } 方法实现,而不是抛出异常,你可以直接在那里返回响应,但可能抛出自定义异常并在Handler类中处理它是更好的选择。