private T DoWithRetry <T>(Func <T> func) { try { if (_cnn.RedisConnection.Repairing) { throw new Exception($"SERedisOperation操作失败,sectionName:{_sectionName},_cnn:{SerializeHelper.Serialize(_cnn)}", new Exception("连接正在修复中")); } return(func()); } catch (Exception ex) { if (ex.Message.IndexOf("SERedisOperation操作失败") > -1) { throw ex; } if (!_cnn.RedisConnection.Repairing) { _cnn.TryRepairConnection(); } throw new Exception($"SERedisOperation操作失败,sectionName:{_sectionName},_cnn:{SerializeHelper.Serialize(_cnn)}", ex); } }