Laravel 无法抛出未实现Throwable的对象
我使用的是Laravel 5.5。下面有一节课 供应商\laravel\framework\src\illumb\Routing\Middleware\ThrottleRequests.php 方法名为:buildException 在Laravel5.4中,我能够用如下方法返回JSONLaravel 无法抛出未实现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
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){