lanzar una excepcion y retornar algo en un metodo
Hola espero que alguien me pueda ayudar,
me voy a explicar con codigo
public boolean doSomething(String arg){
if(arg == null){
throws new NullPointerException("args is null");
}
//continue ....
return false;
}
}
si arg es nulo se soltara la excepcion pero no regresara nada el metodo, lo que esta abajo de la validacion nunca se ejecutara, osea que si alguien lo invoca tambien lanzara una excepcion por que el metodo que llamo no regreso nada y asi podria pasar N candida de veces
Entonces existira alguna forma de lanzar una excepcion y regresar algo en un metodo? segun como yo lo veo no se puede, pero a lo mejor alguien sabe algo mas y me puede ayudar
gracias por su ayuda
- Inicie sesión o regístrese para enviar comentarios
posible solucion
en lugar de usar un throw exception seria bueno llamar a otra clase que a su vez sea un hilo y que lance la excepcion, asi podria seguir ejecutandose el metodo y regresar algo
Pues en la universidad acabo
Pues en la universidad acabo de ver un tema parecido , segun recuerdo existen tres tipos de excepciones que maneja java,
si fuera yo intentaria resolverlo asi
public boolean doSomething(String arg){
if(arg == null){
new LanzarExcepcion() //crearias una clase
}
//continue ....
return false;
}
}
-- Esta clase es la que llamas cuando haces new LanzarExcepcion()
public ExcLeon(){
System.out.println ("El metodo no devuelve nada .");
//o poner un joption o no se algo que se te sirva
}
}
efectivamente eso es lo que
efectivamente eso es lo que estoy pensando hacer, gracias
no
La idea de lanzar una excepción es precisamente interrumpir el flujo normal del programa. En tu caso lo más adecuado sería lanzar una
IllegalArgumentException
con un mensaje que indique que no pueden pasartenull
en ese argumento.Lo de lanzar un hilo no te va a servir de nada porque si arrancas un nuevo hilo y lanzas una excepción en ese hilo, no la vas a poder cachar en el hilo donde hiciste la invocación original.
Las excepciones son objetos y puedes hacer tus propias implementaciones así que eso es lo que podrías hacer. No sé qué estás pensando exactamente en devolver además de la excepción, pero pues puedes crear tu propia clase de excepción, la cual creas con el valor que quieres devolver y entonces donde la cachen pueden extraerlo:
private final int valor;
MiException(int valor, String msg) {
super(msg);
this.valor=valor;
}
int getValor() { return valor; }
}
boolean metodo(String arg) {
if (arg==null) {
throw new MiException(5, "no pases null mano");
}
return true;
}
try {
metodo(null);
} catch (MiExcepcion ex) {
int quePasa = ex.getValor();
}