diff --git a/UyTube_aplicacion/src/Logica/Controladores/CUsuario.java b/UyTube_aplicacion/src/Logica/Controladores/CUsuario.java
index e3875da2c8a7b02e598e92dd159d32e52f86b800..6b46b7dcb0bbcdb8cc059056c3cbf94d55d6a7ea 100644
--- a/UyTube_aplicacion/src/Logica/Controladores/CUsuario.java
+++ b/UyTube_aplicacion/src/Logica/Controladores/CUsuario.java
@@ -223,6 +223,9 @@ public class CUsuario implements IUsuario {
 
     @Override
     public void bajaUsuario() {
+        if(usuarioActual == null){
+            throw new RuntimeException("No se a iniciado sesión");
+        }
         // Bienvenido al parche
         // La verdad no sabia bien como implementar esta funcion, asi que mejor no reinventar la rueda, uso la que ya existe  aunque implique llamar al otro controlador...
         IAdmin ca = Fabrica.getInstancia().getIAdmin();
@@ -233,22 +236,17 @@ public class CUsuario implements IUsuario {
 
     @Override
     public ArrayList<Object> buscar(String busqueda, Filtrado filtro, Ordenacion orden) {
-        if (this.usuarioActual == null) {
-            throw new RuntimeException("No se a iniciado sesión");
-        }
-        if (this.usuarioSeleccionado == null) {
-            throw new RuntimeException("El sistema no tiene un usuario seleccionado");
-        }
         //Cambiar la linea de abajo cuando se implemente la funcion de juan
         // hecho
         ArrayList<Object> ret = new BusquedaEnBDD().buscar(busqueda, filtro, orden);
 
         for (int i = 0; i < ret.size(); i++) {
-            
+
             if (ret.get(i) instanceof DtVideo) {
                 DtVideo vid = (DtVideo) ret.get(i);
                 if (vid.getPrivacidad() == Privacidad.PRIVADO) {
                     try {
+                        // Si el usuarioActual es null, o no posee un video con ese ID, se quita el elemento de la lista
                         this.usuarioActual.obtenerVideo(vid.getId());
                     } catch (Exception e) {
                         ret.remove(i);
@@ -259,16 +257,23 @@ public class CUsuario implements IUsuario {
                 DtListaDeReproduccion list = (DtListaDeReproduccion) ret.get(i);
                 if (list.getPrivacidad() == Privacidad.PRIVADO) {
                     try {
+                        // Si el usuarioActual es null, o no posee una lista con ese ID, se quita el elemento de la lista
                         this.usuarioActual.obtenerListaDeReproduccion(list.getId());
                     } catch (Exception e) {
                         ret.remove(i);
                         i--;
                     }
-                } 
+                }
             } else if (ret.get(i) instanceof DtCanal) {
                 DtCanal canal = (DtCanal) ret.get(i);
-                if (canal.getPrivacidad() == Privacidad.PRIVADO) {
-                    if(this.usuarioActual.obtenerCanal().getId() != canal.getId()){
+                if (canal.getPrivacidad() == Privacidad.PRIVADO) { // Si el canal es privado...
+                    if (sesionIniciada()) { // Si hay una sesion iniciada
+                        if (this.usuarioActual.obtenerCanal().getId() != canal.getId()) { // si el canal no es el propio, se remueve
+                            ret.remove(i);
+                            i--;
+                        }
+                        // si no entro al if, el canal esprivado pero es propio, entonces no se quita
+                    } else { // Si no hay una sesion iniciada, se quita el canal
                         ret.remove(i);
                         i--;
                     }
@@ -280,12 +285,6 @@ public class CUsuario implements IUsuario {
 
     @Override
     public ArrayList<Object> buscar(String categoria) {
-        if (this.usuarioActual == null) {
-            throw new RuntimeException("No se a iniciado la sesión");
-        }
-        if (this.usuarioSeleccionado == null) {
-            throw new RuntimeException("El sistema no tiene un usuario seleccionado");
-        }
         //Cambiar la linea de abajo cuando se implemente la funcion de juan
         // hecho
         ArrayList<Object> ret = new BusquedaEnBDD().buscarPorCategoria(categoria);
@@ -296,6 +295,7 @@ public class CUsuario implements IUsuario {
                 DtVideo vid = (DtVideo) ret.get(i);
                 if (vid.getPrivacidad() == Privacidad.PRIVADO) {
                     try {
+                        // Si el usuarioActual es null, o no posee un video con ese ID, se quita el elemento de la lista
                         this.usuarioActual.obtenerVideo(vid.getId());
                     } catch (Exception e) {
                         ret.remove(i);
@@ -306,6 +306,7 @@ public class CUsuario implements IUsuario {
                 DtListaDeReproduccion list = (DtListaDeReproduccion) ret.get(i);
                 if (list.getPrivacidad() == Privacidad.PRIVADO) {
                     try {
+                        // Si el usuarioActual es null, o no posee una lista con ese ID, se quita el elemento de la lista
                         this.usuarioActual.obtenerListaDeReproduccion(list.getId());
                     } catch (Exception e) {
                         ret.remove(i);
@@ -371,16 +372,19 @@ public class CUsuario implements IUsuario {
         }
         Map<String, Usuario> usuarios = obtenerUsuarios();
         boolean usuarioEncontrado = false;
+        // Intenta obtener al usuario por nickname
         usuarioActual = usuarios.get(nickOEmail);
-        if (usuarioActual == null){
+        if (usuarioActual == null){ // si NO lo encuentra por nickname
+            // Recorre todos los usuarios buscandolo por su correo
             for (Map.Entry<String, Usuario> u : usuarios.entrySet()) {
+                // Si encuentra al usuario con ese correo
                 if (u.getValue().getCorreo().equals(nickOEmail)){
                     usuarioActual = u.getValue();
                     usuarioEncontrado = true;
                     break;
                 }
             }
-        }else{
+        }else{ // si lo encuentra por nickname
             usuarioEncontrado = true;
         }
         
@@ -422,20 +426,17 @@ public class CUsuario implements IUsuario {
 
     @Override
     public ArrayList<DtComentario> listarComentariosDeVideo() {
-        if (this.usuarioActual == null) {
-            throw new RuntimeException("No se a iniciado la sesión");
-        }
         if (this.usuarioSeleccionado == null) {
             throw new RuntimeException("El sistema no tiene un usuario seleccionado");
         }
+        if (idVideoSeleccionado == 0){
+            throw new RuntimeException("El sistema no tiene un video seleccionado");
+        }
         return usuarioSeleccionado.listarComentariosDeVideo(idVideoSeleccionado);
     }
 
     @Override
     public ArrayList<DtListaDeReproduccion> listarListasDeReproduccionDeUsuario(boolean incluirListasPorDefecto) {
-        if (this.usuarioActual == null) {
-            throw new RuntimeException("No se a iniciado la sesión");
-        }
         if (this.usuarioSeleccionado == null) {
             throw new RuntimeException("El sistema no tiene un usuario seleccionado");
         }
@@ -458,9 +459,10 @@ public class CUsuario implements IUsuario {
                 return ret;
             }
         } else {
+            // si no se ha iniciado sesion, o si se inicio sesion pero el usuarioSeleccionado no es el usuarioActual
             // Solo se incluyen las listas Publicas, osea que se quitan todas las Privadas
             for (int i = 0; i < ret.size(); i++) {
-                if (ret.get(i).getPrivacidad() == Privacidad.PUBLICO) {
+                if (ret.get(i).getPrivacidad() == Privacidad.PRIVADO) {
                     ret.remove(i);
                     i--;
                 }
@@ -496,23 +498,11 @@ public class CUsuario implements IUsuario {
 
     @Override
     public ArrayList<DtVideo> listarVideosDeListaDeReproduccion() {
-        if (this.usuarioActual == null) {
-            throw new RuntimeException("No se a iniciado la sesión");
-        }
         if (this.usuarioSeleccionado == null) {
             throw new RuntimeException("El sistema no tiene un usuario seleccionado");
         }
         ArrayList<DtVideo> ret = this.usuarioSeleccionado.listarVideosDeListaDeReproduccion(idListaSeleccionada);
-        if (this.usuarioActual != this.usuarioSeleccionado) {
-            // Se devuelven solo los videos Publicos
-            for (int i = 0; i < ret.size(); i++) {
-                if (ret.get(i).getPrivacidad() == Privacidad.PRIVADO) {
-                    ret.remove(i);
-                    i--;
-                }
-            }
-            return ret;
-        } else {
+        if (this.usuarioActual == this.usuarioSeleccionado) {
             // incluye los videos privados si y solo si son del usuario actual
             // dicho de otra manera: quita los videos privados que no son del usuarioActual
             for (int i = 0; i < ret.size(); i++) {
@@ -526,14 +516,20 @@ public class CUsuario implements IUsuario {
                 }
             }
             return ret;
+        } else {
+            // Se devuelven solo los videos Publicos
+            for (int i = 0; i < ret.size(); i++) {
+                if (ret.get(i).getPrivacidad() == Privacidad.PRIVADO) {
+                    ret.remove(i);
+                    i--;
+                }
+            }
+            return ret;
         }
     }
 
     @Override
     public ArrayList<DtVideo> listarVideosDeUsuario() {
-        if (this.usuarioActual == null){
-            throw new RuntimeException("No se a iniciado la sesión");
-        }
         if (this.usuarioSeleccionado == null){
             throw new RuntimeException("El sistema no tiene un usuario seleccionado");
         }
@@ -632,10 +628,10 @@ public class CUsuario implements IUsuario {
 
     @Override
     public DtCanal obtenerCanalDeUsuario() {
-        if (usuarioActual == null) {
-            throw new RuntimeException("No se a iniciado la sesión");
+        if (this.usuarioSeleccionado == null){
+            throw new RuntimeException("El sistema no tiene un usuario seleccionado");
         }
-        return usuarioActual.obtenerCanal();
+        return usuarioSeleccionado.obtenerCanal();
     }
 
     @Override
@@ -670,9 +666,15 @@ public class CUsuario implements IUsuario {
 
     @Override
     public DtValoracion obtenerValoracionDada() {
-        if (usuarioSeleccionado == null) {
+        if (usuarioActual == null) {
             throw new RuntimeException("No se a iniciado la sesión");
         }
+        if(usuarioSeleccionado == null){
+            throw new RuntimeException("El sistema no tiene un usuario seleccionado");
+        }
+        if (idVideoSeleccionado == 0){
+            throw new RuntimeException("El sistema no tiene un video seleccionado");
+        }
         return usuarioSeleccionado.obtenerValoracion(idVideoSeleccionado, usuarioActual.getNickname());
     }
 
@@ -681,6 +683,9 @@ public class CUsuario implements IUsuario {
         if(usuarioSeleccionado == null){
             throw new RuntimeException("El sistema no tiene un usuario seleccionado");
         }
+        if (idVideoSeleccionado == 0){
+            throw new RuntimeException("El sistema no tiene un video seleccionado");
+        }
         return usuarioSeleccionado.listarValoracionesDeVideo(idVideoSeleccionado);
     }
 
@@ -689,6 +694,9 @@ public class CUsuario implements IUsuario {
         if(usuarioActual == null){
              throw new RuntimeException("No se a iniciado la sesión");
         }
+        if (idListaSeleccionada == 0){
+            throw new RuntimeException("El sistema no tiene una lista de reproduccion seleccionada");
+        }
         usuarioActual.quitarVideoDeListaDeReproduccion(idListaSeleccionada,idVideo);
      
     }
diff --git a/UyTube_aplicacion/src/Logica/Interfaces/IUsuario.java b/UyTube_aplicacion/src/Logica/Interfaces/IUsuario.java
index 59dfcaeb0738df048bf36c714984fade39e50933..b6a9a98d671765ebf1ae522188a30474785c9a3d 100644
--- a/UyTube_aplicacion/src/Logica/Interfaces/IUsuario.java
+++ b/UyTube_aplicacion/src/Logica/Interfaces/IUsuario.java
@@ -65,7 +65,8 @@ public interface IUsuario {
      * Busca contenido por coincidencia de texto en nombre o descripcion de los
      * contenidos del sistema En el resultado se incluirán (si corresponde segun
      * el filtrado) los videos privados del usuarioActual
-     *
+     * Si no se ha iniciado sesión, se muestran sólo los contenidos públicos
+     * 
      * @param busqueda Texto a buscar (si es vacío incluye todo el contenido)
      * @param filtro Tipo de contenido en el cual se realizará la búsqueda
      * @param orden Manera de ordenar el resultado de la búsqueda
@@ -79,7 +80,8 @@ public interface IUsuario {
      * Busca contenido que pertenezcan a la categoria indicada El Resultado
      * contendrá todos los contenidos publicos, y los contenidos privados del
      * usuarioActual
-     *
+     * Si no se ha iniciado sesión, se muestran sólo los contenidos públicos
+     * 
      * @param categoria Nombre de la categoria a buscar
      * @return Resultado de la busqueda. Puede contener DtVideo y
      * DtListaDeReproduccion. (para usar los elementos devueltos hay que
@@ -189,7 +191,8 @@ public interface IUsuario {
      * Lista los videos contenidos en la lista idListaSeleccionada perteneciente
      * al usuarioSeleccionado Si la lista contiene video privado que no
      * pertenezca a usuarioActual, estos no se incluiran en el resultado
-     *
+     * Si no se ha iniciado sesion solo lista los videos publicos
+     * 
      * @return Conjunto de videos
      */
     public ArrayList<DtVideo> listarVideosDeListaDeReproduccion();