try except跟try finally合一起不能运行except后的内容
function Tform1.DownLoadFile(sURL,sFName:string):boolean;
var
tStream:TMemoryStream;
begin
tStream:=TMemoryStream.Create;
try
try
idHttp1.Get(sURL,tStream);
tStream.SaveToFile(sFName);
Result:=true;
finally
tstream.Free;
end;
except
Result:=false;
tStream.Free;
end;
end;
代码如上
[解决办法]
在except 后面的 tStream.Free; 是多余的,如果有异常发生tStream被释放两次,又导致新的异常。
finally是一定会执行的,except是有异常的时候才执行,所以不用调用两次Free