Perdido

4 respostas
Z

Pessoal, ando um pouco perdido em POO, meu professor mandou um trabalho onde precisamos tratar 2 exceções, mas ele não ensinou NADA sobre isso.
eu fiz 2 classes (para as duas exceções), vejam:

Exceção de Ano

import javax.swing.JTextField;


public class AnoInvalidoException {
	
	private int ano;
	Recepcao rcp;
	private JTextField txtano;
		
	public int getAno (int ano){
	rcp=new Recepcao();
	txtano=(JTextField)rcp.getTxtano();
	
	ano=Integer.parseInt(txtano.getText());
	
	if (ano < 1850 || ano > 2011)
		throw new IllegalArgumentException("Ano inválido");
	else
		return ano;
	
}
}

Exceção de matricula

import javax.swing.JTextField;


public class MatriculaInvalidaException {
	
	
private String mat;
Recepcao rcp;
private JTextField txtmat;

public String getMat(String mat) {   
	rcp=new Recepcao();
	txtmat=(JTextField)rcp.getTxtano();
	mat=String.valueOf(txtmat.getText());
	  if (mat.matches ("[a-zA-z0-9 ]*")) {   
	  return mat;
	  }else{
		  throw new IllegalArgumentException("Matrícula Inválida");
	  }   
	  
	}  
}

Minha dúvida é…agora que elas estão criadas, onde exatamente eu coloco elas na minha main? ou como eu faço pra carrega-las…estou perdido por completo nessa parte.

4 Respostas

Frantic_Avenger

Você esqueceu de colocar a herança.
Dá uma olhada neste tópico:
http://www.guj.com.br/java/91741-como-criar-uma-classe-de-excecao-personalizada

Z

public class AnoInvalidoException extends Exception
e
public class MatriculaInvalidaException extends Exception

somente isso?

Jemerson

Apenas para reforçar o que a galera expôs ,segue um Exemplo:

public class AnoValido extends Exception {
	private int ano;
		
	public void setAno(int ano) {
		 if (ano < 1850 || ano > 2011){  
		       throw new IllegalArgumentException("Ano inválido");
		}else{
			this.ano = ano;
		}
		
	}
}

O método principal ficaria:

public class Principal {
	public static void main(String[] args) {
		AnoValido a= new AnoValido();		
		a.setAno(2012);		
		
	}

}

Ou você poderia criar uma classe exeção:

public class MinhaExecao extends Exception {

	public MinhaExecao(String msg) {
		super(msg);

	}

}

Sua classe AnoValido passaria a usar o bloco try{} catch(){}

public class AnoValido {
	private int ano;

	public void setAno(int ano) {
		if (ano < 1850 || ano > 2011) {
			try {
				throw new MinhaExecao("Ano inválido");
			} catch (MinhaExecao e) {

				e.printStackTrace();
			}
		} else {
			this.ano = ano;
		}

	}

}

Teríamos a seguinte saída:

execao.MinhaExecao: Ano inválido
	at execao.AnoValido.setAno(AnoValido.java:10)
	at execao.Principal.main(Principal.java

Na prática, criar uma classe somente para tratar a exceção não é muito usual, mas para fins didáticos é legal explorar essa possibilidade.
A classe principal não precisou ser modificada.

Z

MUUUUITO obrigado, vou dar fzer uns testes hoje no estágio (meu trabalho ta la), aproveitando o tópico, gostaria de fzer outra pergunta.

Pede no trabalho, para que cadastre até 10 pessoas, (mas na realidade não existe nenhum cadastro, oqe ele faz é contabilizar quantos planos foram selecionado e total deles [isso ja resolvi]), minha dúvida é a seguinte:

eu tentei colocar um for no botão ok (para poder ser clica somente 10x), está certo? (tendo em vista que não deu certo hahaha)

Criado 28 de novembro de 2011
Ultima resposta 30 de nov. de 2011
Respostas 4
Participantes 3