在delphi中使用ApplicationEvents控件,如何调用ApplicationEvents1Exception?

我在编辑框中输入非数字,程序报错,并且“请在编辑框中输入数字”也弹出了,但是在ListBox中没有添加“应用程序发生了一个异常”。... 我在编辑框中输入非数字,程序报错,并且“请在编辑框中输入数字”也弹出了,但是在ListBox中没有添加“应用程序发生了一个异常”。 展开
 我来答
至少让我看一眼
推荐于2016-10-05 · TA获得超过451个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:241万
展开全部

因为异常已经在Button1Click中经由函数中的Try..Except处理了。所以ApplicationEvents自然无法拦截。你可以在except中将这个异常再度抛出。或者是直接在except中。将这个异常直接添加到ListBox1。例如:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  try
    i := StrToInt(Edit1.Text) - 5;
   明指和 ShowMessage('您输入的值减5后的值是: ' + IntToStr(i));
  except
    on e: EConvertError do
    begin
      ShowMessage('请在输入框中输入数字!');
      //再度激盯抛出一个EConvertError异常,以便于让TApplicationEvents拦截
      raise EConvertError.Create(e.Message);
    end;
  end;
end;

procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
  ShowMessage('调用了此过程');
  ListBox1.Items.Add('此逗喊程序发生了一个异常,异常信息为: ' + E.Message);
end;
追问

我试了一下,异常信息是能添加到ListBox中。我输入aa,然后点击button,会弹出

然后我点ok后又弹出

点OK又弹出

点OK又弹出

再点OK,然后异常信息添加到ListBox中了。我觉得既然异常处理了,是不是异常窗口就不应该弹出了?(备注:我是一个小菜鸟。)

追答
Delphi在调试的时候出现异常的话会弹出异常的信息。不管你是否添加了Try..Except。这个我也没有很好的办法。
ydf521521
2013-08-14 · 超过10用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:33.5万
展开全部
用e:exception中的e.属性。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
下扬州啊
2015-06-30 · TA获得超过2519个赞
知道大有可为答主
回答量:4870
采纳率:40%
帮助的人:2120万
展开全部
Application.OnException := ApplicationEvents1.OnException;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式