Olá, estou com problemas num método que retorna um valor. A variável que quero retornar é criada dentro de um try, mas dá erro (sim, pode ser que a variável não seja criada e assim não haverá retorno) mas existe algum modo de eu retornar ela dentro do try sem esse erro? (Erro de método “não void” sem retorno).
Exemplo:
public int teste(){
try{
int variavel = 0;
variavel++;
return variavel;
}
catch(Exception e){
JOptionPane...
}
}
O jeito que eu faço, eu acho que está errado
public int teste(){
int variavel = 0;
try{
variavel++;
}
catch(Exception e){
JOptionPane...
}
return variavel;
}
Não esqueça, caso ocorra uma exceção, mesmo assim deve retorna algum valor, ok?
Edit: ao invés de retornar o valor podes lançar a exceção, isso “desobriga” que você tenha de colocar o return algumvalor;
já que não podes dar um return após lançar uma exceção.
a sua maneira já esta correta. Porque não criar a variável fora do Try ??
Tchauzin![/quote]
Rs. Acho que eu posso ter complicado a vida dele ao invés de ajudar.
Sim, está correto e Lina, ele já cria a variavél fora do Try, apenas incrementa ela dentro do Try
Ah quero evitar isso, porque isso foi meio que um exemplo, na minha aplicação eu crio um objeto. E nao quero criar o objeto se um resultset não encontrar nada.
public Contato metodo(){
String query = "select * from contato where nome = 'x'";
//aqui, independente do resultset, o objeto é criado, nao queria isso
Contato contato = new Contato();
try{
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultset = statement.executeQuery();
if(resultset.next()){
contato.setNome(resultset.getString("nome"));
contato.setEmail(resultset.getString("email"));
contato.setEndereco(resultset.getString("endereco"));
contato.setData(resultset.getString("dataNascimento"));
return contato;
}
statement.close();
resultset.close();
}
catch(Exception e){}
mas nao gostei de como ficou, fiz desse jeito agora
public Contato metodo(){
String query = "select * from contato where nome = 'x'";
Contato contato;
try{
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultset = statement.executeQuery();
if(resultset.next()){
contato = new Contato();
contato.setNome(resultset.getString("nome"));
contato.setEmail(resultset.getString("email"));
contato.setEndereco(resultset.getString("endereco"));
contato.setData(resultset.getString("dataNascimento"));
return contato;
}
statement.close();
resultset.close();
}
catch(Exception e){}
return null;
}
mas só esse return null; depois do catch que não me agradou