1

Estoy resolviendo el problema para un login, el cual debe devolver un error al usuario al no ingresar algún campo requerido (cadena vacía).

Para lanzar mi error, quiero implementar una función de tipo bool usando try-catch

///Si response == true, no hay nombre (vacio)
///Si respons == false, sí hay nombre   
public static boolean notEmptyName(String namefield) {
boolean response= true ;
try {
    if (namefield !="") {
        response = false;
    }           
} 
catch (Exception e) {
        //Aqui mando mi mensaje de error 400 bad request si namefield viene vacío           
}
return response;
}

Sin embargo nunca entra al catch.

Mi implementación es:

    public UserId createUser(@RequestBody User user) {
    
    UserId userId =  new UserId();

    if (!notEmptyName(user.getName())) {
        userId = serviceApplication.createUser(user);   
    }
    return userId;       
    }   

Comodín: ¿Se puede utlizar la función isEmpty para saber si mi cadena llega vacía poniendo en el condicional del if "namefield.isEmpty();" ?

Daniel
  • 31
  • 2
  • Por saber, por qué quieres hacer uso de try-catch? Nunca entra en el catch porque ese código no te va a lanzar ninguna excepción. No sería mejor hacer directamente: if (!namefield.isEmpty()) { return false; } else { //Aqui mando mi mensaje de error 400 bad request si namefield viene vacío return true; } ? – Rodrigo Oct 16 '20 at 19:07
  • Porque me lo pidieron explícitamente con un try-catch. Me hicieron revisión con el if-else justo como me dices y me lo regresaron. Entonces aquí ando batallando. – Daniel Oct 16 '20 at 19:14
  • Pues siento no poder ayudarte, aún se me escapan muchas cosas de java a mi :-D. Hasta donde se, puedes crear excepciones personalizadas... no se si irá por ahí lo que te piden... A ver si se pasa alguien con más conocimiento y te ayuda, que también me interesa las posibles respuestas que puedan darte.. – Rodrigo Oct 16 '20 at 19:19

1 Answers1

0

No es recomendable obtener un error para validar un valor, lo mejor es tratar de evitarlo.

Te sugiero revisar si el valor de la cadena es null o vació, modifica tu método de esta forma:

public static boolean notEmptyName(String namefield) {
    boolean response= true ;
        if ((namefield == null || namefield.trim().isEmpty())) {
            response = false;
        } else {
            //Aqui mando mi mensaje de error 400 bad request si namefield viene vacío
        }
    return response;
}

Si te pidieron explícita-mente realizar la "validación" con un try-catch, lo puedes realizar llamando el método equals() que también sirve para comparar el valor de la cadena de caracteres, si el valor es null, eso provocará el error.

public static boolean notEmptyName(String namefield) {
    boolean response= true ;
    try {
        if (namefield.equals("")) {
            response = false;
        }
    }
    catch (Exception e) {
        //Aqui mando mi mensaje de error 400 bad request si namefield viene vacío
    }
    return response;
}
  • Por cierto en el lenguaje Java, la comparación de cadenas se realiza mediante el método equals(), no uses los operadores != o == , es incorrecto.

Revisa:

Operador != no funciona como espero en Java

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
  • Hey, muchas gracias! No conocía el "equals". Soy nuevo en Java. Saludos! – Daniel Oct 16 '20 at 21:15
  • Hola @Daniel, ok, es entendible, cuando iniciamos creo que tenemos este problemita y no usamos equals() a mí me sucedió :-) – Jorgesys Oct 16 '20 at 21:16