Предупреждение компилятора «возвращаемое значение может быть неопределенным»

Я часто использую код примерно следующего содержания:

function GetNumber(Handle : THandle) : Integer;
begin
FLock.BeginRead;
try
  if FMap.TryGetValue(Handle, Object) then
    raise EArgumentException.Create('Invalid handle');
  Result := Object.Number;
finally
  FLock.EndRead;
end;
end;

К сожалению, компилятор выдает предупреждение для всех этих методов:

[DCC Warning] Unit.pas(1012): W1035 Return value of function 'GetNumber' might be undefined

Я знаю это предупреждение, но в данном случае я не вижу для него никакой причины. Или есть сценарий, который мне не хватает, который приведет к неопределенному результату? Я понимаю предупреждение в случае попробуйте .. кроме , но для попробуйте .. окончательно для меня это не имеет смысла.

Вопросы:

  • Есть ли причина для предупреждения?
  • Как я могу избавиться от него (перемещение строки Result: = Object.Number из блокировки не является вариантом, и я хочу избежать написания совершенно ненужной строки Result: = 0 в вверху каждой функции)

Спасибо!

12
задан Cosmin Prund 4 July 2011 в 10:43
поделиться