jpf*_*ius 12 delphi compiler-warnings delphi-xe
我经常使用以下代码:
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;
Run Code Online (Sandbox Code Playgroud)
不幸的是编译器给了我所有这些方法的警告:
[DCC Warning] Unit.pas(1012): W1035 Return value of function 'GetNumber' might be undefined
Run Code Online (Sandbox Code Playgroud)
我知道这个警告,但在这种情况下,我根本看不出任何理由.或者是否存在我遗漏的情况会导致未定义的结果值?在这种情况下,我理解警告,try..except但对try..finally我来说没有意义.
问题:
Result := Object.Number线移出锁定不是一个选项,我想避免Result := 0在每个函数的顶部写一个完全不必要的行)谢谢!
警告有什么理由吗?
我看不到一个,但因为它的存在 raise
我怎样才能摆脱它(将Result:= Object.Name行移出锁定不是一个选项,我想避免在每个函数的顶部写一个完全不需要的结果:= 0行)
将raise语句移动到它自己的过程.
function GetNumber(Handle : THandle) : Integer;
procedure InvHandle;
begin
raise EArgumentException.Create('Invalid handle');
end;
begin
FLock.BeginRead;
try
if FMap.TryGetValue(Handle, Object) then
InvHandle;
Result := Object.Number;
finally
FLock.EndRead;
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |