to gaoqiang
关键在于捕捉程序中出现的意想不到的错误。下面的代码对你有帮助,我在NT,2000,98
下均使用通过,试一试吧,如果想彻底屏蔽,就对错误处理过程不做任何处理即可。
program Project1;
uses
sysutils,
dialogs,
Forms,
windows,
Unit1 in 'Unit1.pas' {Form1};
type
tglobalexhandler=class
public
procedure handleproc(sender:tobject;einstance:exception);
end;
procedure tglobalexhandler.handleproc(sender:tobject;einstance:exception);
var lasterror:integer;
begin
lasterror:=getlasterror;
if lasterror=ERROR_NOT_READY then messagedlg('驱动器尚未准备好',mterror,[mbok],0)
else messagedlg('出现无法处理的错误,'+#10#13+'错误代码为:'+inttostr(lasterror)+'是否中断程序',mterror,[mbyes,mbno],0)=idyes then application.Terminate;
end;
var
globalexhandler:tglobalexhandler;
{$R *.RES}
begin
globalexhandler:=tglobalexhandler.Create;
application.OnException:=globalexhandler.handleproc;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
to 笑傲江湖:
谁能保证一个程序中不出任何错误,特别是自动通讯程序,如果因为某个异常没有及时
处理,导致整个系统崩溃,那还了得,特别是某些异常无法预见的,比如通讯线路故障,
这种异常捕捉到就释放,等待下一次通讯握手,这是最有效的解决方法。