Problema com try...catch [Resolvido]

3 respostas
karh-el
public class ExceçõesNumericas extends NumberFormatException{

    public ExceçõesNumericas(){
        super();
    }
}
public class ClasseTestaCalculo {
          public static Double converteToDouble(String str) {
        try{
            Double i=Double.parseDouble(str);
            return i;
        }catch(ExceçõesNumericas e){
            JOptionPane.showMessageDialog(null, "Exceção");
            return null;
        }
    }
     public static void main(String args[]) {
                  Double i = ClasseTestaCalculo.converteToDouble("A");
     }
}

No try…catch aparece a mensagem
is never thrown in body of corresponding try statement (nunca é jogado no corpo da declaração correspondente)

Por quê?

3 Respostas

mario.fts

é um problema de herança.

ExceçõesNumericas é um NumberFormatException.

mas NumberFormatException não é um ExceçõesNumericas.

quando o parseDouble da o erro, ele lança NumberFormatException, e vc não está capturando ele, pq ele não é um ExceçõesNumericas.

isso só daria certo se fosse o contrário:

public class NumberFormatException extends ExceçõesNumericas{  
   
 }
edmarr

Para vc entender o problema de herança segue o codigo .

class ExecaoNumerica extends NumberFormatException{
	public ExecaoNumerica() {
		// TODO Auto-generated constructor stub
		super();
	}
}

public class ClasseTestaCalculo {
	
        public static Double converteToDouble(String str) {
        try{
        	System.out.println("Dentro 1 ");
            Double i=Double.parseDouble(str);
            return i;
        
        }catch(ExecaoNumerica e){
            System.out.println("Execao 1 " + e.getMessage());
        }catch(Exception e){
        	System.out.println("Execao 2 " + e.getMessage());
        }finally{
        	return null;
        }
        
    }
     public static void main(String args[]) {
    	 System.out.println("Inicio");
    	 Double i = converteToDouble("A");
    	 System.out.println("Fim");
     }
}
karh-el

Agora ficou claro.
Valeu, pessoal.

Criado 27 de agosto de 2009
Ultima resposta 27 de ago. de 2009
Respostas 3
Participantes 3