代码之家  ›  专栏  ›  技术社区  ›  Pankaj

无法抛出未实现Throwable的对象

  •  1
  • Pankaj  · 技术社区  · 7 年前

    供应商\laravel\framework\src\Illuminate\Routing\Middleware\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 回复  |  直到 7 年前
        1
  •  1
  •   Marcin Nabiałek    7 年前

    好吧,你现在不能再这样做了。您需要返回异常类。但您可以做的是返回一些自定义异常类,然后在 app/Exceptions/Handler.php 在“render method”中,可以添加:

    if ($e instanceof YourCustomException) {
       return response()->json('429 Too many requests');
    }
    

    handle 方法,而不是抛出异常,您可以直接在其中返回响应,但可能抛出自定义异常并在处理程序类中处理它是更好的选择。