异常的处理(100分)

  • 主题发起人 主题发起人 PowerDelphi
  • 开始时间 开始时间
P

PowerDelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好:
; ;我有一个关于异常处理的问题向各位请教:
; ;FORM1有一控件DRIVECOMBOBOX1,当我选择A:时引发了EINOUTERROR异常,我想自己处理这个异常,于是我有下代码:
procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
; try
; except
; ; on E:EInOutError do
; ; MessageDlg('设备尚未准备好,请重试',mtError,[mbCancel],0);
; end;
end;
但处理并未成功,并未弹出我想要的MESSAGEDLG对话框,于是屏蔽上述事件句柄,又有另一种处理方法:
首先在FORM1的私有域中声明以下过程:
procedure DoWithException(Sender:TObject;E:Exception);
实现部分如下:
begin
; try
; except
; on E:EInOutError do
; showmesssage('设备尚未准备好');
;end;
end;
然后在FORM1的oncreate事件句柄中有如下代码:
application.onexception:=DoWithException;
程序运行但什么异常提示也没有,于是在DoWithException实现部分只留下MessageDlg一句,成功(得到了“设备尚未准备好”的对话框)!请问是什么地方错了导致前次异常处理失败?请指教!!!
我想根据异常的类型来做相应的处理,该怎样做?例如发生Einouterror时,我想DO SOMETHING1;当触法
EOUTOFMEMORY异常时DO SOMETHING2……,请各位大侠帮忙,多谢!!!
 
脱离开发环境运行了?
 
9494,是IDE帮你截获的异常,关掉Delphi独立运行就正常了
 
你的异常处理有问题
异常应该在
try
except
之间产生才能出发
except
end;
之间的异常处理。
 
你已经到成功的边上了.你将你所知的错误代码写在DoWithException不就行了,难道不行吗?
procedure DoWithException(Sender:TObject;E:Exception);
begin
; if pos('valid integer',e.Message)>0 then
; ; ;ShowMessage('你输入了非法的数值!')
; else
; ; ;Application.ShowException(E);//你可输入其它的错误消息在这儿作判断.
; end;
end;
DoWithException本身就是处理出错的过程,你就判断e.Message的信息就行了.
 
有没有将Tools/Debugger Options/Language Exception中的Stop on Delphi Exceptions 去掉?
 
to:张,HD-COPY,baniu
; 程序是脱立DELPHI独立运行的。
TO:zhengzhijia
; 怎么写才能达到我的目的,请写个例子好吗?
TO:zhangkan
; 还是有点有太懂。

;
 
接受答案了.
 
后退
顶部