Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 无法抛出未实现Throwable的对象_Laravel_Laravel 5_Laravel Middleware_Laravel 5.5_Laravel Response - Fatal编程技术网

Laravel 无法抛出未实现Throwable的对象

Laravel 无法抛出未实现Throwable的对象,laravel,laravel-5,laravel-middleware,laravel-5.5,laravel-response,Laravel,Laravel 5,Laravel Middleware,Laravel 5.5,Laravel Response,我使用的是Laravel 5.5。下面有一节课 供应商\laravel\framework\src\illumb\Routing\Middleware\ThrottleRequests.php 方法名为:buildException 在Laravel5.4中,我能够用如下方法返回JSON protected function buildException($key, $maxAttempts) { $retryAfter = $this->getTimeUntilNextRetry

我使用的是Laravel 5.5。下面有一节课

供应商\laravel\framework\src\illumb\Routing\Middleware\ThrottleRequests.php

方法名为:buildException

在Laravel5.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');
}
当我尝试使用Laravel5.5在上述方法中返回JSON时,它说

无法抛出未实现Throwable的对象


当然,对于上述方法,我如何在Laravel5.5中返回JSON呢。您需要返回异常类。但您可以做的是返回一些自定义异常类,然后在
app/Exceptions/Handler.php
中的`呈现方法'中添加:

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

当然,如果你真的需要,您可以添加自己的
handle
方法的实现,而不是直接在那里抛出异常,您可以直接在那里返回响应,但可能抛出自定义异常并在处理程序类中处理它是更好的选择。

您可以在这两个地方给出有关自定义异常的更多细节和示例吗(ThrottleRequests and Handler.php)您可以创建自定义类,该类扩展
Symfony\Component\HttpKernel\Exception\HttpException
,在
buildException
方法中抛出此异常,而不是在处理程序中使用
if($e instanceof YourCustomException){