【发布时间】:2015-05-05 22:44:51
【问题描述】:
假设我有以下例程:
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 例程中),如何避免这种情况?
【问题讨论】:
-
“在上面的构造中,finally 块在 except 块之后执行” - 这是不正确的。
标签: delphi exception-handling try-except try-finally