次のルーチンがあるとします。
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 ルーチンなど、ルーチンが通常の操作の一部として例外をスローする状況で、どのように回避できますか?