Bom o que acontece é o seguinte:
Estava lendo a apostila da Caelum e lá diz que é ruim utilizar if retornando um valor booleano caso o parametro passado esteja errado.
Pois bem estou tentando executar com o Try Catch agora mas, como farei pra ele solicitar ao usuário toda vez que ele digitar o parametro de forma errada.
public String nome="";
public String Excecao(String nome){
try {
if(nome.equals("Henry")){
throw new IllegalArgumentException();
}
else{
this.nome = nome;
return(this.nome);
}
}
catch(IllegalArgumentException e){
System.out.println("Digitou Henry e nao pode");
}
}
}[/code]
Classe principal
[code]import java.util.*;
public class ExemploExcecao{
public static void main(String args[]){
Teste t = new Teste();
System.out.println("Digite seu nome");
Scanner src = new Scanner (System.in);
String oia = src.nextLine();
String retorno = t.Excecao(oia);
System.out.println(retorno);
}
}[/code]
Seguinte ele esta dando este erro aqui tb, porque?
simples, lendo a mensagem: Se seu metodo lançar uma exceção ele deve return alguma coisa senao ele tb deve return alguma coisa… o compilador ele nao pensa… antes dele chegar a linha q lança uma exceção… ele verifica se vc implementou correto o metodo e nao implementou nao… pq ele ver olha tem uma exceção aki e ela é trata ali… mais eu vou retornar o q? nao to achando o return qdo lanço uma exceção… ja que o método define q ele tem q retornar uma String.
entendeu? sempre que vc coloca um tipo que nao seja void… vc deve return algo para o seu método senao o codigo nao compila… Tratamento de exceções nao tem nada ver com esse problema… e sim o assunto de fundamentos :d
flw!! qualquer duvida so gritar… olha o codigo basico que nao compila e que compila:
Ele disse "Missing return statment at Teste.java:20.
Isso quer dizer que no método public String Excecao(String) voce não está retronando nada…
Ah, mas vc estava dentro do else, não é?! SIM, porem o compilador não pode garantir que aquele ponto será atingido em tempo de execução, e para resolver isso é só colocar no método um return no final.
[code]public String Excecao(String nome){
try {
if(nome.equals("Henry")){
throw new IllegalArgumentException();
}
else{
this.nome = nome;
}
}
catch(IllegalArgumentException e){
System.out.println("Digitou Henry e nao pode");
}
return this.nome;
}[/code]