Manipulaçao de exceçoes (meu codigo)

5 respostas
Alexandre_Laranja

galera vou postar um codigo q fiz..
quero saber qual o modo correto de capturar uma exceçao ok?

public class MinhaClasse{
	String nome;
	int idade;

	public MinhaClasse(String nome, int idade) throws NomeException IdadeException{
		this.nome = nome;
		this.idade = idade;
	}

}

public class NomeException extends Exception{
	public NomeException(){
		System.out.println("Informe um nome válido"); 
	}
}
 
public class IdadeException extends Exception{
	public IdadeException(){
		System.out.println("Informe um valor de idade válido");
	}
}
Ou é assim????
public class MinhaClasse{
	String nome;
	int idade;

	try{
		public MinhaClasse(String nome, int idade) throws nomeException idadeException{
			this.nome = nome;
			this.idade = idade;
			
			if (nome != String){
				throw new nomeException;
			} 
			
			if (idade != int){
				throw new idadeException;
			}
		}
	}
	catch (nomeException n){
		System.out.pritnln("Informe um nome válido");
		this.nome = "";
	}
	catch (idadeException i){
		System.out.println("Informe um valor de idade válido");
		this.idade = null;
	}

mals ae pq nao sei como dizer se algo eh diferente de String ou de um int, provavelmente o modo q eu fiz ali " if(nome!=String)" deve ta errado, se alguem puder dizer como faço issu tb, fico agradecido!

vlw!

5 Respostas

Alexandre_Laranja

.

tubiluki

para saber se um objeto é de um determinado tipo vc pode utilizar instanceof

nome instanceof String.

mas esse codigo ai nao compila por outros motivos

no construtor:

public minhaClasse(nome, idade)

vc não passa o tipo de nome e idade.

deveria ser

public MinhaClasse(String nome, int idade)

lembrando que nome de classe sempre começa com letra maiuscula, por convencao.

e logo vc não precisaria verificar se nome é String e idade é int.

entendeu?

Alexandre_Laranja

tubiluki:
para saber se um objeto é de um determinado tipo vc pode utilizar instanceof

nome instanceof String.

mas esse codigo ai nao compila por outros motivos

no construtor:

public minhaClasse(nome, idade)

vc não passa o tipo de nome e idade.

deveria ser

public MinhaClasse(String nome, int idade)

lembrando que nome de classe sempre começa com letra maiuscula, por convencao.

e logo vc não precisaria verificar se nome é String e idade é int.

entendeu?

sim sim, vlw!
ateh concertei la…
mas a duvida nao eh saber se um objeto eh string, float, int, …
a duvida q eu tinha comentado era como dizer se algo e diferente de uma string, como fiz no codigo acima “if(nome != String)”…

sergiotaborda
Alexandre Laranja:
galera vou postar um codigo q fiz.. quero saber qual o modo correto de capturar uma exceçao ok?

Nenhuma das duas formas.

sobre exceções
boas práticas

- não crie exceções se não precisa
- não lança exceções em construtores. A única que pode é IllegalArgumentException

public class MinhaClasse{
	String nome;
	int idade;

	public MinhaClasse(String nome, int idade) {
                if (nome==null){ // condição de erro
                   throw new IllegalArgumentException("Nome é obrigatorio");
                }
                if (idade < 0) { // condição de erro
                   throw new IllegalArgumentException("Idade é negativa. Tem que ser positiva.");
                }
		this.nome = nome;
		this.idade = idade;
	}

}

As exceções não têm System.out.print dentro delas. Isso tb é errado.

Alexandre_Laranja

vlw brow!

boas dicas mesmo!

Criado 4 de julho de 2008
Ultima resposta 5 de jul. de 2008
Respostas 5
Participantes 3