delphi异常处理

delphi异常处理,第1张

//在界面上放一个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 语句里。

一、复合语句(或称语句结构、语句框架、语句模式等)

1、粗放式

try

finally

end

try

except

end

2、精细式

try

except

on

异常1:

当异常1发生时的处置方法

on

异常2:

当异常2发生时的处置方法

......

on

异常n:

当异常n发生时的处置方法

end

二、简单语句

raise

主动抛出异常,供外层异常处理机制处理如本程序没有自己处理的机制,则交由操作系统处理,或者说最外层的处理机制是操作系统,处理方式一般就是弹出对话框。

三、嵌套方式举例

try

......

try

......

except

on

Ex1:

DoEx1

on

Ex2:

DoEx2

......

on

Exn:

raise

//

自己不处理,由外层处置

end

finally

......

end

呵呵!很高兴为你回答在多层数据库应用中通常有以下几种通信协议:TDCOMConnection DCOM

TSocketConnection Windows Sockets (TCP/IP)l

TOLEnterpriseConnection OLEnterprise (RPCs)

TMIDASConnection即DCOM、TCP/IP、OLEnterprise和CORBA这些不同的连接方式都各有利弊,到底选择哪种连接方式,取决于客户的数量、客户的分布情况以及怎样发布应用程序。

DCOM是一种最直接的连接方式,它不需要专门的运行期软件支持。不过,Windows 95 不支持DCOM,除非安装了DCOM95程序。

要使用MTS安全服务,最好使用DCOM连接方式。MTS的安全服务是基于角色的,当一个客户通过DCOM访问MTS时,DCOM会告诉MTS有关客户的信息,MTS据此来决定客户的角色。如果用其他连接方式,需要有专门的运行期软件支持,客户的调用首先被传递给这些运行期软件而不是MTS,MTS就不能尽快指派角色。

TCP/IP连接方式的适合范围非常广泛,例如,如果客户程序要以ActiveForm的形式分布在Web上,最好采用TCP/IP连接方式,因为您无法肯定下载ActiveForm的计算机是否支持DCOM,而支持TCP/IP的环境是很普遍的。

要使用TCP/IP连接方式,应用服务器端必须运行一个专门的运行期软件ScktSrver.exe或ScktSrvc.exe,其中,ScktSrvc.exe只适合于Windows NT,可以作为一个服务在后台运行。与DCOM连接方式不同的是,客户的请求首先传递给ScktSrver.exe或ScktSrvc.exe,然后再创建远程数据模块的实例,而不是由客户的调用直接创建远程数据模块的实例。客户程序上的MIDAS连接构件通过IProvider接口与ScktSrvr.exe or ScktSrvc.exe通讯。

不过,客户程序很有可能在没有正常释放对IProvider 接口的引用之前出现异常,而TCP/IP连接方式无法检测到这种情况,更无法通知应用服务器,因此,有可能造成应用服务器上的资源被占用后得不到释放的后果。

如果要在应用服务器端使用Business Object Broker,就要使用OLEnterprise连接方式。此时,应用服务器端和客户端都要安装OLEnterprise运行期软件。

Delphi 4是目前唯一支持CORBA的开发工具。基于CORBA的客户程序和应用服务器可以与其他基于CORBA的应用程序无缝对接。要使用CORBA连接方式,需要ORB的支持,它提供了类似于Business Object Broker的功能。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/53694.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-26
下一篇2023-02-26

发表评论

登录后才能评论

评论列表(0条)

    保存