Sobre Hint em função booleana...

Delphi

08/04/2005

pessoal tenho a funçaõ:
function Divisao(var Resultado: Double; A, B: Integer): Boolean;
begin
  try
     Resultado := A / B;
     Result := True;
  excetp
     Result := False; // aqui é gerada a hint...
     raise Exception.Create(´Exceção gerada por mim´);
  end;
end;
na linha que o resultado recebe false ou seja houve uma exceção o depurador pula a linha [b:7adb9a45a3]Result := False;[/b:7adb9a45a3] direto para o raise e gera um hint dizendo que o essa linha não está sendo utilizada, o que acontece? Disconfio que em funções booleanas qdo é gerada uma exceção o result recebe false automaticamente, sera que estou certo?


Bruno Belchior

Bruno Belchior

Curtidas 0

Respostas

Rjun

Rjun

08/04/2005

Se você executar esse código, verá que mesmo que uma exception seja gerada, a funcão ira retorna True.

Em funções booleanas, coloque sempre na primeira linha o comando
result := false;


GOSTEI 0
Massuda

Massuda

08/04/2005

....gera um hint dizendo que o essa linha não está sendo utilizada, o que acontece? Disconfio que em funções booleanas qdo é gerada uma exceção o result recebe false automaticamente, sera que estou certo?
Na verdade o que acontece é que quando uma exceção é gerada o valor de retorno é indefinido. Portanto, é desnecessário atribuir um valor a Result.

Por exemplo:
var
  OK: Boolean;
  X: Double;
  A, B: Integer;
...
  OK := Divisao(X, A, B);
Se ocorrer uma exceção dentro de Divisão, a variável OK nunca irá receber um valor (qualquer que seja), já que Divisão não vai retornar, pois a execução será desviada para o tratador de exceção. Por isso o compilador conclui que é desnecessário atribuir um valor a Result. Se você remover o [b:93a1392a1d]raise[/b:93a1392a1d] do sua function, o valor de retorno passa a ser necessário e o compilador pára de gerar o warning.


GOSTEI 0
POSTAR