Pessoal, estou tentando fazer uma calculadora com interface gráfica bem simples, só com as 4 principais operações mesmo. E queria colocar um tratamento de exceção caso tente realizar uma divisão por zero.
Vou colocar alguns trechos das minhas classes, para não ficar muito grande.
Classe Calculadora
[code]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculadora extends JanelaGrafica {
private float op1, op2, result;
private int cont;
private char operador;
private Calculadora Atual; // Só para mandar o objeto atual para o tratamento de exceção
public Calculadora()throws DivPorZero{
//Construtor da classe JanelaGrafica, para criar a janela da calculadora.
super();
/* Contador para saber se já foi digitado um operador, para que seja possível
* saber a ordem dos operadores (das variáveis).
*/
cont = 0;
Atual = this;
operandos[0].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//Se for o primeiro operador da conta
if(cont==0){
op1 = Float.parseFloat(topo.getText());
topo.setText(null); //Apagar o TextField da calculadora, para receber o novo operando.
cont++; //Indicar que já foi digitado um operador.
operador = '/';
}
}
});
operandos[1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(cont==0){
op1 = Float.parseFloat(topo.getText());
topo.setText(null);
cont++;
operador = '*';
}
}
});
operandos[2].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(cont==0){
op1 = Float.parseFloat(topo.getText());
topo.setText(null);
cont++;
operador = '+';
}
}
});
operandos[3].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(cont==0){
op1 = Float.parseFloat(topo.getText());
topo.setText(null);
cont++;
operador = '-';
}
}
});
operandos[5].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cont = 0;
topo.setText(null);
}
});
operandos[4].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
switch(operador){
case '/':
if(cont==1){
op2 = Float.parseFloat(topo.getText());
topo.setText(null);
String aux;
result = op1 / op2;
aux = Float.toString(result);
topo.setText(aux);
cont--;
}
else{
throw new DivPorZero(Atual);
//topo.setText(null);
}.......[/code]
Classe DivPorZero
public class DivPorZero extends Exception{
public DivPorZero(Calculadora calc){
calc.topo.setText("Erro. Não existe divisão por 0.");
}
}
O erro que aparece é o seguinte:
[color=red]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Unhandled exception type DivPorZero
at AplicacaoGrafia.main(AplicacaoGrafia.java:6)
[/color]
A calculadora está realizando as operações normalmente, só que na hora que mando fazer uma div por 0, só aparece a palavra “Infinity” no TextField, e eu queria mudar isso com o tratamento de exceções.
Muito Obrigado.