Dúvida em tipo de retorno de método

3 respostas
E

Olá pessoal !

Alguém poderia me explicar pq está dando erro no tipo de retorno deste método ? Ele diz que precisa ser retornado um tipo int, e eu acho q é isso q eu estou fazendo ! :???:

Esse é o método:

/************ GRAVA DADOS ************/
	public int Gravar(String Nome, String Tel){
		
		int ID = 0;
		String query = "SELECT MAX(Cod) AS CodCad FROM Cadastro";

		try{
			ResultSet rs = stmt.executeQuery(query);
			ID = rs.getInt("CodCad");
			query = "INSERT INTO Cadastro(Cod, Nome, Telefone) VALUES(" + ID++ + "

Obrigado !

[]'s
J P" + Nome + "

Obrigado !

[]'s
J P , 

Obrigado !

[]'s
J P" + Tel + "

Obrigado !

[]'s
J P)";
			return ID;
		}
		catch(SQLException e){
			JOptionPane.showMessageDialog(null,
					"Erro ao gravar." + e,
					"Erro",
					JOptionPane.OK_OPTION);
		}
	}

Obrigado !

[]'s
J P

3 Respostas

M

ta dando erro pq tu precisa ter um return fora do try tb... pq imagine assim, se ele lançar a SQLException antes do return, ele nunca vai retornar algo... entendeu? o compilador precisa ter um return q ele saiba q sempre vai ser executado.. mas tu pode dar um return ID no final do método q ele vai funcionar do jeito esperado, ou seja.. se nao der erro no teu try, ele vai retornar o ID q tu ta retornando dentro do try.. do contrário, vai retornar o ID lá embaixo.. bem, fica assim:

public int Gravar(String Nome, String Tel){ 
       
      int ID = 0; 
      String query = "SELECT MAX(Cod) AS CodCad FROM Cadastro"; 

      try{ 
         ResultSet rs = stmt.executeQuery(query); 
         ID = rs.getInt("CodCad"); 
         query = "INSERT INTO Cadastro(Cod, Nome, Telefone) VALUES(" + ID++ + "" + Nome + " , " + Tel + ")"; 
         return ID; 
      } 
      catch(SQLException e){ 
         JOptionPane.showMessageDialog(null, 
               "Erro ao gravar." + e, 
               "Erro", 
               JOptionPane.OK_OPTION); 
      } 

      return ID; //  adiciona isso aqui
   }
J

Porque dentro do catch não tem um return. Como o return está dentro do try, é possivel que este return não seja excecutado, então, vc tb tem que por um return dentro do catch, ou então coloca um finnaly com o return, pois este sempre é executado, independente de exceção ou não.

Blz?

E

Valeu pessoal !

Acabei adicionando o return depois do bloco try{} !

Obrigado !

[]'s
J P

Criado 3 de julho de 2004
Ultima resposta 3 de jul. de 2004
Respostas 3
Participantes 3