Я часто использую код примерно следующего содержания:
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
в вверху каждой функции) Спасибо!