当前位置:主页>仓库管理软件> 列表

关于文本文件打开的错误捕捉问题。 找库存商品进销存

销售管理软件版1楼: 以下有两个过程
procedure TfrmTest.Button3Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F, ''c:\1\2\abc.txt'');
try
if not FileExists(''c:\1\2\abc.txt'') then Rewrite(F);
Append(F);
Writeln(F, ''ddddd'');
CloseFile(F);
except
on E: Exception do begin
CloseFile(F);
ShowMessage(E.Message);
end;
end;
end;

procedure TfrmTest.Button2Click(Sender: TObject);
begin
try
Button3Click(nil);
except
on E: Exception do begin
ShowMessage(E.Message);
end;
end;
end;
我想问:当“c:\1\2\”这路径不存在的情况下,点击Button3的时候,Button3Click的Try捕捉不到错误信息,显示的错误信息不是Button3Click的ShowMessage(E.Message);
只能通过单击Button2才能捕捉到错误。
为什么?高手们一定要指定指点!!

2楼: 你先要检查该文件是否存在,再能够去打开啊 如库存商品进销存

3楼: 该路径不存在,那文件肯定不存在。
关键不在这里,我想知道的是关于错误捕捉的问题。

4楼: 把CloseFile(F);这句去掉 或放到ShowMessage(E.Message);下面
因为CloseFile(F);也会抛出异常,可以放到另一个try里.
var
F: TextFile;
begin
AssignFile(F, ''c:\1\2\abc.txt'');
try
if not FileExists(''c:\1\2\abc.txt'') then Rewrite(F);
Append(F);
Writeln(F, ''ddddd'');
CloseFile(F);
except
on E: Exception do begin
ShowMessage(E.Message);
try
CloseFile(F);
except
on E: Exception do
ShowMessage(E.Message);
end;
end;
end;

5楼: 哈哈!谢谢!!
确实能够捕捉的异常了!只是代码看上去好像有点夸张,看来要想办法精简一下。

6楼: 多人接受答案了。