lanzar una excepcion y retornar algo en un metodo

Hola espero que alguien me pueda ayudar,

me voy a explicar con codigo

public class Main{

 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

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de skuarch

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

Imagen de puzzlemaniaco

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 class Main{
 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 class LanzarExcepcion extends Exception{
        public ExcLeon(){
                System.out.println ("El metodo no devuelve nada .");
                //o poner un joption o no se algo que se te sirva
        }
}
Imagen de skuarch

efectivamente eso es lo que

efectivamente eso es lo que estoy pensando hacer, gracias

Imagen de ezamudio

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 pasarte null 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:

class MiExcepcion extends RuntimeException {
  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();
}