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).
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.
Talius
Não acredito que o jeito que você está fazendo esteja errado. É até muito utilizado em alguns casos.
Mas você poderia fazer de outra forma. Poderia retornar 0 caso caia na exceção ou até lança-la para que seja tratada em outro método.
a sua maneira já esta correta. Porque não criar a variável fora do Try ??
Tchauzin!
nel
lina:
Oi,
Para! Para! Para! Para! rsrs
a sua maneira já esta correta. Porque não criar a variável fora do Try ??
Tchauzin!
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
T
tsalsicha
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.
publicContatometodo(){Stringquery="select * from contato where nome = 'x'";//aqui, independente do resultset, o objeto é criado, nao queria issoContatocontato=newContato();try{PreparedStatementstatement=connection.prepareStatement(sql);ResultSetresultset=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"));returncontato;}statement.close();resultset.close();}catch(Exceptione){}
mas nao gostei de como ficou, fiz desse jeito agora
publicContatometodo(){Stringquery="select * from contato where nome = 'x'";Contatocontato;try{PreparedStatementstatement=connection.prepareStatement(sql);ResultSetresultset=statement.executeQuery();if(resultset.next()){contato=newContato();contato.setNome(resultset.getString("nome"));contato.setEmail(resultset.getString("email"));contato.setEndereco(resultset.getString("endereco"));contato.setData(resultset.getString("dataNascimento"));returncontato;}statement.close();resultset.close();}catch(Exceptione){}returnnull;}
mas só esse return null; depois do catch que não me agradou
Contato é uma classe só com get e set
lina
Oi,
Faz assim:
public Contato metodo(){
String query = "select * from contato where nome = 'x'";
Contato contato = null;
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"));
}
statement.close();
resultset.close();
}
catch(Exception e){}
return contato;
}
Não precisa 2 retornos. Você já declara antes do Try sua classe.
Tchauzin!
T
tsalsicha
lina:
Oi,
Faz assim:
public Contato metodo(){
String query = "select * from contato where nome = 'x'";
Contato contato = null;
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"));
}
statement.close();
resultset.close();
}
catch(Exception e){}
return contato;
}
Não precisa 2 retornos. Você já declara antes do Try sua classe.
Tchauzin!
Realmente, brisa minha ... 1 retorno, caso não entre no if, ele retorna o null.