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.