DELPHI出现异常不弹出对话框处理方式

我们在开发程序时,有时针对程序出现的异常不需要弹出对话框来提示,比如做数据采集时,如果无人值守,出现对话框采集就会停止,那么我们就需要将异常处理改为非对话框模式进行,比如在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;

最终显示的结果如下,是不是很容易
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值