起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 252|回复: 17

【结帖】用自己的异常处理来代替系统的异常处理时屏蔽不掉系统异常**

[复制链接]
发表于 2009-5-20 16:15:55 | 显示全部楼层 |阅读模式
用自己的异常处理来代替系统的异常处理时,
系统异常依旧弹出,再继续运行时才弹出自己的异常处理,这是为什么呢?
怎样屏蔽掉系统异常呢?
回复

使用道具 举报

 楼主| 发表于 2009-5-20 16:17:41 | 显示全部楼层
http://bbs.justep.com/forum.php? ... ;highlight=MyExProc
我依据这个写的,可是依旧弹出系统的异常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-20 16:21:39 | 显示全部楼层
怎么没人处理哦~急用哦~在线等,谢谢
回复 支持 反对

使用道具 举报

发表于 2009-5-20 16:27:58 | 显示全部楼层
你要屏蔽什么异常?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-20 17:20:14 | 显示全部楼层
business.System.SysUtils.StrToDateTime(ComboBox1.Text);  
截取转换字符串为日期型的异常
ComboBox1.Text中为2009-05-20 07:00:00 这种格式的数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-20 17:27:30 | 显示全部楼层
procedure TJSDLRCK.MyExProc(Sender: Business.System.TObject; E: Business.System.Exception);
begin
    if Business.System.StrUtils.AnsiContainsText(e.Message,'is not a valid date and time') then
    begin
         jsdialogs.ShowMsg('您输入的日期有误!','提示');
         //在这里处理你需要处理的异常。Xxx为你要截获的异常的信息。
         Edit1.Focused;
         exit;
    end;

  Raise E;  //对于不需要截获的异常照常抛出。

end;
回复 支持 反对

使用道具 举报

发表于 2009-5-21 08:43:56 | 显示全部楼层
用try except不能截获吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-21 09:07:23 | 显示全部楼层
不行,我试过了,一样还是会弹出系统的异常
回复 支持 反对

使用道具 举报

发表于 2009-5-21 09:09:13 | 显示全部楼层
你是怎么写的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-21 09:17:02 | 显示全部楼层
先定义private
    {private declarations}
    TempProc: TExceptionEvent;
    Procedure MyExProc(Sender: Business.System.TObject; E: Business.System.Exception);

窗体运行时
procedure TJSDLRCK.BizFormCreate(Sender: TObject);
begin
     TempProc:=  Forms.Application.OnException ;  //记录下原来的异常处理程序
     Forms.Application.OnException:= MyExProc;   //将异常处理程序改为自己的。
end;
  
在查询按钮事件底下,转换日期business.System.SysUtils.StrToDateTime(ComboBox1.Text);

再就是截获事件
procedure TJSDLRCK.MyExProc(Sender: Business.System.TObject; E: Business.System.Exception);
begin
    if Business.System.StrUtils.AnsiContainsText(e.Message,'is not a valid date and time') then
    begin
         jsdialogs.ShowMsg('您输入的日期有误!','提示');
         //在这里处理你需要处理的异常。Xxx为你要截获的异常的信息。
         Edit1.Focused;
         exit;
    end;

  Raise E;  //对于不需要截获的异常照常抛出。

end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-20 19:16 , Processed in 0.040177 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表