不能抛出未实现 Throwable 的对象
Cannot throw objects that do not implement Throwable
我正在使用 Laravel 5.5。有以下class
vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php
方法名称:buildException
在 Laravel 5.4 中,我能够 return 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 尝试 return JSON 时,它说
Cannot throw objects that do not implement Throwable
现在确定了,我如何在 Laravel 5.5 中 return JSON 进行上述方法
嗯,你现在不能再这样了。您需要 return 异常 class。但是你可以做的是 returning 一些自定义异常 class 然后在 app/Exceptions/Handler.php
在`render方法中你可以添加:
if ($e instanceof YourCustomException) {
return response()->json('429 Too many requests');
}
当然,如果您真的需要,您可以添加自己的 handle
方法实现,而不是抛出异常,您可以直接在其中 return 响应,但可能会抛出自定义异常并在处理程序 class 是更好的选择。
我正在使用 Laravel 5.5。有以下class
vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php
方法名称:buildException
在 Laravel 5.4 中,我能够 return 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 尝试 return JSON 时,它说
Cannot throw objects that do not implement Throwable
现在确定了,我如何在 Laravel 5.5 中 return JSON 进行上述方法
嗯,你现在不能再这样了。您需要 return 异常 class。但是你可以做的是 returning 一些自定义异常 class 然后在 app/Exceptions/Handler.php
在`render方法中你可以添加:
if ($e instanceof YourCustomException) {
return response()->json('429 Too many requests');
}
当然,如果您真的需要,您可以添加自己的 handle
方法实现,而不是抛出异常,您可以直接在其中 return 响应,但可能会抛出自定义异常并在处理程序 class 是更好的选择。