我在Laravel中使用Redis作为缓存。
但是当laravel无法连接到Redis时,我无法捕获异常(redis已停止,......)。我希望捕获此异常以通过JSON响应客户端。
我该怎么做?
答案 0 :(得分:2)
您可以使用render()
类App\Exceptions\Handler
函数作为:
public function render($request, Exception $exception)
{
if ($exception instanceof SomeRedisException) {
return response()->json('Redis Error',500);
}
return parent::render($request, $exception);
}
答案 1 :(得分:0)
如果Redis连接错误-RedisException
扩展名将抛出phpredis
。
控制器或中间件中的某处:
try {
// Call Laravel Cache facade when Redis connection is failing
// This will throw exception
Cache::get('cache_key');
} catch (RedisException $exception) {
// In case Redis error - do custom response
Log::error('Redis error', [
'message' => $exception->getMessage(),
'trace' => $exception->getTrace()
]);
return response()->json([
'error' => 'your error message to client'
]);
}