假设我有以下例程:
function ReadFile(f : TFilename) : Boolean;
var
fs : TFileStream;
begin
Result := False;
try
fs := TFileStream.Create(f, ...);
try
// read file ...
Result := True;
finally
FreeAndNil(fs);
end;
except
// handle exceptions ...
end;
end;
有except
和finally
转置的含义是什么?我已经看到很多关于它们的帖子,但是我还没有看到一个明确的解释,说明在哪种情况下哪个是合适的(我仍然认为在上面的构造中,块在块之后执行很奇怪!finally
)。except
我还看到一些帖子表明混合try..except
和try..finally
块不是一个好主意。在例程作为正常操作的一部分抛出异常的情况下(例如在某些 Indy 例程中),如何避免它?