我们在开发程序时,有时针对程序出现的异常不需要弹出对话框来提示,比如做数据采集时,如果无人值守,出现对话框采集就会停止,那么我们就需要将异常处理改为非对话框模式进行,比如在MEMO里面显示错误信息,那如何实现呢,我们用最简单的例子来说明:
下面是一个简单的例子,不做处理时,默认是对话框提示错误信息,这个例子是当除数为0时,进行报错提示
正常状态:
如果除数为0时,则报错,系统默认的报错方式为对话框
那么如果要改成所有报错信息不使用对话框,而是在MEMO中显示,我们做以下几个步骤就可以了
【第一步】:先定义一个过程,名称可以自定义,我这里举例过程名为:ErrInf
procedure ErrInf(Sender: TObject;E:Exception);
然后给过程添加如下代码:
procedure TForm1.ErrInf(Sender: TObject; E: Exception);
var
ErrorInf:string;
begin
ErrorInf:= e.Message;
end;
【第二步】在软件窗口创建时添加如下代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException:=ErrInf; //ErrInf就是上面自定义的过程
end;
做完以上两步,基本就把所有的异常信息都屏蔽了,就算是软件有任何错误都不会提示出来,那如果想把错误信息放到MEMO显示呢?
实现也很简单,添加如下代码就可以,如:本例中针对Button的除法计算代码中,可以增加错误获取,显示的方式就是在MEMO中
procedure TForm1.Button1Click(Sender: TObject);
var
i:Single;
begin
try
i:=StrToFloat(Edit1.Text) / StrToFloat(Edit2.Text);
Memo1.Lines.Add('本次两数相除的结果为:'+ FloatToStr(i));
except //异常处理
on E:Exception do
begin
Memo1.Lines.Add(e.Message); // 将异常信息添加到MEMO中显示
end;
end;
end;
最终显示的结果如下,是不是很容易