Foros del Web » Programación para mayores de 30 ;) » Java »

Error con Excepciones

Estas en el tema de Error con Excepciones en el foro de Java en Foros del Web. Hola Amigos, estoy probando excepciones y me surge algo curioso y no se porque me sucede. Tengo este codigo pequenno: Código: //funcion main public class ...
  #1 (permalink)  
Antiguo 27/05/2014, 07:29
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 7 meses
Puntos: 28
Pregunta Error con Excepciones

Hola Amigos, estoy probando excepciones y me surge algo curioso y no se porque me sucede.

Tengo este codigo pequenno:

Código:
//funcion main
 public class Main {
   
    public static void main(String[] args) 
    {
        try                
        {
         GuardarDatos(null);
        }
        catch(ExcepcionNula e)
        {
            throw new ExcepcionNula("Objeto no existe");
        }
    }
    
    public static void GuardarDatos(Consumidor cons)
    {
        int x = cons.getA();
    }        
}
y las clases pequennas estas:

Código:
public class Consumidor {

    private int a;
    
    public Consumidor() {
    }

    public int getA() {
        return a;
    }    


public class ExcepcionNula extends Exception{

    public ExcepcionNula(String message) {
        super(message);
    }
}
resulta que en l linea del catch me da el siguiente error:
'exception javaaplication.ExcepcionNula is never thrown in body of corresponding try statement'

y mas abajo en el throw me dice esto:
'unreported exception javaaplication.ExcepcionNula; must be caugthor declared to be thrown'


Porque me sucede que hago mal, quiero saber el porque?

saludos
cronos
  #2 (permalink)  
Antiguo 27/05/2014, 07:40
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Error con Excepciones

Es una excepción tuya que hereda de Exception que es checked, por lo tanto si un método la lanza debe indicarse en su declaración mediante throws. En tu caso te da error porque con el catch estás diciendo que GuardarDatos puede lanzarla pero en su declaración le falta el throws que le permite lanzarla.

Aparte de eso, en el catch recoges la excepción y vuelves a lanzarla, pero el main no puede propagarla por seer checked así que te obliga a que le añadas un nuevo try/catch a tu throw.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 27/05/2014, 12:18
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 7 meses
Puntos: 28
Respuesta: Error con Excepciones

Gracias por su explicacion, ya andaba por ahi, pienso que asi como lo dejo ahora estaria bien,ya que guardar datos es quien lanza la escepcion y el catch seria el cheked.

Código:
public static void main(String[] args) 
    {
        try                
        {
            GuardarDatos(null);
        }
        catch(ExcepcionNula e)
        {            
            System.out.print(e.getMessage());
        }
    }
    
    public static void GuardarDatos(Consumidor cons) throws ExcepcionNula
    {
        int x =0;
        if (cons!=null)
         x = cons.getA();
        else throw new ExcepcionNula("Objeto no existe");
    }
saludos

Etiquetas: clase, excepciones, objeto, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:47.