DELPHI基础教程:异常处理与程序调试(一)[4]
产生一个资源保护块
Delphi提供了一个保留字finally 用于实现资源的保护
{分配资源}
try
{资源使用情况}
finally
{释放资源}
end;
try…finally…end就形成了一个资源保护块 finally后面的语句是在任何情况下 不论程序是否发生异常 都会执行的
对于( )中的例子如下代码即可确保所分配内存资源的释放
var
APointer : Pointer ;
AInt ADiv : Integer;
begin
ADiv := ;
GetMem ( APointer )
try
AInt := div ADiv ;
finally
FreeMem ( Apointer )
end;
end;
下面的例子摘自( )节 是在文件拷贝中实现文件资源的保护
procedure CopyFile(const FileName DestName: TFileName)
var
CopyBuffer: Pointer;
TimeStamp BytesCopied: Longint;
Source Dest: Integer;
Destination: TFileName;
const
ChunkSize: Longint = ;
begin
Destination := ExpandFileName(DestName)
if HasAttr(Destination faDirectory) then
Destination := Destination + \ + ExtractFileName(FileName)
TimeStamp := FileAge(FileName)
GetMem(CopyBuffer ChunkSize)
try
Source := FileOpen(FileName fmShareDenyWrite)
if Source < then
raise EFOpenError Create(FmtLoadStr(SFOpenError [FileName]))
try
Dest := FileCreate(Destination)
if Dest < then
raise EFCreateError Create(FmtLoadStr(SFCreateError [Destination]))
try
repeat
BytesCopied := FileRead(Source CopyBuffer^ ChunkSize)
if BytesCopied > then
FileWrite(Dest CopyBuffer^ BytesCopied)
until BytesCopied < ChunkSize;
finally
FileClose(Dest)
end;
finally
FileClose(Source)
end;
finally
FreeMem(CopyBuffer ChunkSize)
end;
end;
程序的具体解释见 ( )节
在异常保护的情况下 当异常发生时 系统会自动弹出一个消息框用于显示异常的消息 退出当前模块后异常类自动清除
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
lishixinzhi/Article/program/Delphi/201311/25194