当前位置:编程学习 > Delphi >>

delphi try except

try except
抛出异常的时间太长了 怎么缩短响应时间? 比如说1秒没try成功就转到except。
或者在timer事件中 怎么时间到了转到button1的except事件中?
答案://在界面上放一个Timer控件,设置Interval为1000即1秒,当然也可以根据实际情况设置为100,500,以缩短判断时间。
//然后在Timer执行时,记录流逝时间。
//最后在你要处理的过程中,加入对流逝时间的判断,如果大于你预期的时间,则抛出异常。
//---------------------------------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls;

type
EMyException = class(Exception);
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
UsedTime:Integer=0;//秒
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var ii:integer;
begin
UsedTime:=0;
Timer1.Enabled :=True;
Try
//以下为你自己的处理过程。中间加入对UsedTime的判断。如果大于你预定的时间,则抛出异常
for ii:=1 to 100000000 do
begin
application.ProcessMessages;
if UsedTime>=2 then
raise EMyException.Create('Your custom error message! For example : Timeout!');
end;

except
Showmessage('TimeOut!');
Timer1.Enabled :=False;
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
UsedTime:=UsedTime+1;
end;

end.

//这里面的关键是,在满足你设定的时间条件后,要用 Raise 抛出一个异常!就可以使程序直接进入 Except 语句里。

通过TIMER没有办法实现。但是你可以用Thread线程的方式实现。在try 1秒后检查Thread是否已经执行完了,如果没有执行完,就raise,就会运行到except中。

上一个:Delphi疑惑
下一个:delphi如何导出EXCEL

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,