Java - detetar excepciones distintas en el catch

 
Vista:

detetar excepciones distintas en el catch

Publicado por Juan Pablo (6 intervenciones) el 06/07/2004 20:15:19
Hola, le comento mi problema, una funcion tengo el siguiente codigo.

try {
jndiContext = new InitialContext();
}
catch (Exception e) {
System.out.println("Could not create JNDI " + "context: " + e.toString());
System.exit(1);
}

Lo que estoy intentando hacer es bin al active directory, y mi objetivo es detectar: cuando fallo porque el user y password es incorrecto, aca les paso el mensaje que me da:

Usuario invalido: javax.naming.AuthenticationException:
[LDAP: error code 49 - 80090308: LdapErr: DSID-0C09030B,
comment: AcceptSecurityContext error, data 525, v893]

y cuando el servicio esta dado de baja, el mensaje es:

Usuario invalido: javax.naming.CommunicationException:
dcmar0011111.cencosud.arg:389
[Root exception is java.net.UnknownHostException: dcmar0011111.cencosud.arg]

Como hago el catch para distinguir estos dos casos ?

gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:detetar excepciones distintas en el catch

Publicado por chuidiang (532 intervenciones) el 07/07/2004 09:58:48
Se pueden poner varios catch con varios tipos de excepciones. No estoy muy seguro de la sintaxis, pero sería algo como esto

try
{
...
}
catch (AuthenticationException e1)
{
...
}
catch (UnknowHostException e2)
{
...
}
catch (Exception e)
{
// Aqui se tratan el resto de las excepciones
}

Ten en cuenta que las excepciones también llevan una estructura de herencias entre ellas. Por ejemplo, todas heredan de Exception.

Al saltar una excepción, se mira el primer catch a ver si la excepcion que ha saltado es o es hija de la que se pone en el catch(). En caso afirmativo se trata y si no se pasa al siguiente catch().

Con esto quiero decirte que si pones primero de todo el catch(Excepcion e), todas entraran ahi y se ignorarán los siguientes. Debes poner en los catch() primero las excepciones mas "hijas" de todas y al final la mas "padre".

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:detetar excepciones distintas en el catch

Publicado por Victor (2 intervenciones) el 08/07/2004 17:55:10
puedes encadenar tantos catch como quieras, por ejemplo:

try{
....
}catch(AuthenticationException ae){...}
}catch(CommunicationException ce){...}

en tu caso en lugar de poner Exception, tienes que distinguir en dos catch: AuthenticationException, CommunicationException
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar