Métodos para validar email en Java


14 de Mayo del 2020

Buenos dias,

Como puedo validar un correo electronico y lanzar una excepcion en el caso de que el usuario no incluya una @.

He creado la clase ExcepcionMail. En la clase principal pido que el usuario ingrese un email y he creado un metodo para pedirlo.

Muchas gracias.

 

/* Clase ExcepcionMail */
public class ExcepcionMail extends Exception {
	   public ExcepcionMail(String msg) {
	        super(msg);
	    }
}


/* Clase principal */ //En la clase principal pido que el usuario que ingrese un email. String email = pedirEmail("Introduzca el EMAIL: "); //Metodo pedirEmail private String pedirEmail(String string) { return null; }

 


Sara
12 de Agosto del 2026

Hola,

Con una excepción propia (checked, para que el compilador te obligue a capturarla o declararla), el patrón queda así:

class ExcepcionMail extends Exception {
    public ExcepcionMail(String mensaje) {
        super(mensaje);
    }
}

public void pedirEmail() throws ExcepcionMail {
    Scanner sc = new Scanner(System.in);
    System.out.print("Introduce tu email: ");
    String email = sc.nextLine();

    if (!email.contains("@")) {
        throw new ExcepcionMail("El email debe contener una arroba");
    }

    System.out.println("Email valido: " + email);
}

Y en el método principal, como pedirEmail() declara throws ExcepcionMail, quien la llame tiene que capturarla:

public static void main(String[] args) {
    try {
        new TuClase().pedirEmail();
    } catch (ExcepcionMail e) {
        System.out.println("Error: " + e.getMessage());
    }
}

Con contains("@") cubres el caso básico que pides. Si más adelante necesitas algo más riguroso (que haya algo antes y después de la arroba, un dominio con punto, etc.), lo normal es pasar a una expresión regular en vez de seguir encadenando comprobaciones con contains:

if (!email.matches("^[^@\s]+@[^@\s]+\.[^@\s]+$")) {
    throw new ExcepcionMail("Formato de email invalido");
}

Pero para el ejercicio tal y como lo planteas, con el contains("@") es suficiente y más fácil de entender.

Sara