Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Laravel无法连接到Redis时,如何捕获异常?_Laravel_Redis - Fatal编程技术网

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

当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) {

我使用Redis作为Laravel中的缓存

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

如何操作?

您可以使用
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(以获取缓存的请求量)。