当Laravel无法连接到Redis时如何捕获异常?

时间:2016-11-01 04:09:23

标签: laravel redis

我在Laravel中使用Redis作为缓存。

但是当laravel无法连接到Redis时,我无法捕获异常(redis已停止,......)。我希望捕获此异常以通过JSON响应客户端。

我该怎么做?

2 个答案:

答案 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);
}

Docs

答案 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'
    ]);
}