Я часто использую код в следующих строках:
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
Я знаю это предупреждение, но в этом случае я не вижу никакой причины для этого вообще. Или есть сценарий, который мне не хватает, который привел бы к неопределенному значению результата? Я понимаю предупреждение в случае try..except
, но для try..finally
оно не имеет смысла для меня.
Вопросы:
- Есть ли причина для предупреждения?
- Как мне избавиться от этого (перемещение строки
Result := Object.Number
из блокировки не вариант, и я хочу избежать написания совершенно ненужной строки Result := 0
в верхней части каждой функции)
Спасибо!