【发布时间】:2011-09-28 01:15:50
【问题描述】:
我经常使用以下代码:
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行)
谢谢!
【问题讨论】:
-
+1。不幸的是,我不得不处理几次。你会在我的代码中找到一些
Result := X; // Avoid compiler warning,其中一些是有条件编译的,因为版本之间的编译器发生了变化。 Embarcadero 应该修复这个错误,因为它很烦人!
标签: delphi compiler-warnings delphi-xe