Duda sobre excepciones #222
-
Hola buenas noches, tenemos una consulta sobre metodos y excepciones. Si nosotros tenemos un método y este tiene adentro una llamada a otro método que puede fallar y lanzar una excepción, si la excepción se lanza el primer método deja de ejecutarse? O tira la excepción y sigue con el resto del código? El código es este:
En este caso si validarPassword tira excepción el set sigue con la asignación o sale? Gracias |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
¡Hola! Las excepciones cortan el flujo de ejecución siempre que no haya un bloque ¡Saludos! |
Beta Was this translation helpful? Give feedback.
-
Por otro lado, algunos comentarios sobre el código:
Con todo esto, te propongo modificar tu código así: public void setPassword(String password) {
this.validarPassword(password);
this.password = password;
}
public abstract Usuario obtenerUsuario();
public void validarPassword(String password) {
if(!validador.validarDebilidadPassword(password)) throw new ErrorPassword("La password no cumple los requisitos.");
if(validador.validarTopMalasContrasenias(password)) throw new ErrorPassword("La password es demasiado debil. Por favor, elija otra.");
} |
Beta Was this translation helpful? Give feedback.
Por otro lado, algunos comentarios sobre el código:
FileNotFoundException
es una excepción checkeada, es decir, te obliga a declararla en la firma de cada método que pueda lanzarla. Eso es un problema, y lo que recomiendo es que no la declares y por el contrario la envuelvas en unaRuntimeException
o alguna subclase (este es uno de los pocos casos en que tiene sentido en Java capturar una excepción que de todas formas querías propagar).try-catch
envalidarPassword
, dado que estás cambiando una excepción de dominio por otra, cuando yaErrorPassword
era un buen nombre y aportaba una causa suficientemente específica