Manipulaçao de exceçoes (meu codigo)

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

[code]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”);
}
}

[/code]

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!

.

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?

[quote=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?[/quote]

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)”…

[quote=Alexandre Laranja]galera vou postar um codigo q fiz…
quero saber qual o modo correto de capturar uma exceçao ok?
[/quote]

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

[code]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;
}

}

[/code]

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

vlw brow!

boas dicas mesmo!