当Laravel无法连接到Redis时,如何捕获异常?
我使用Redis作为Laravel中的缓存 但当laravel无法连接到Redis(Redis已停止,…)时,我无法捕获异常。我希望捕获此异常以通过JSON响应到客户端 如何操作?您可以使用当Laravel无法连接到Redis时,如何捕获异常?,laravel,redis,Laravel,Redis,我使用Redis作为Laravel中的缓存 但当laravel无法连接到Redis(Redis已停止,…)时,我无法捕获异常。我希望捕获此异常以通过JSON响应到客户端 如何操作?您可以使用App\Exceptions\Handler类的render()函数作为: public function render($request, Exception $exception) { if ($exception instanceof SomeRedisException) {
App\Exceptions\Handler
类的render()
函数作为:
public function render($request, Exception $exception)
{
if ($exception instanceof SomeRedisException) {
return response()->json('Redis Error',500);
}
return parent::render($request, $exception);
}
如果Redis连接错误-将由
phpredis
扩展引发RedisException
在控制器或中间件中的某个位置:
试试看{
//当Redis连接失败时调用Laravel Cache facade
//这将引发异常
Cache::get('Cache_key');
}捕获(RedisException$exception){
//如果Redis出错-执行自定义响应
日志::错误('Redis error'[
'message'=>$exception->getMessage(),
'trace'=>$exception->getTrace()
]);
返回响应()->json([
'错误'=>'您发送给客户端的错误消息'
]);
}
你知道try
和catch
及其使用方法吗?非常感谢!成功了$异常是类ConnectionException的实例!(y) 哦,对不起。我是堆栈溢出的新手。再次感谢!请注意,这对API路由不起作用,因为Throttle
中间件试图在其他中间件\控制器之前连接到Redis(以获取缓存的请求量)。