注册 登录
编程论坛 Delphi论坛

进行数据的修改,若出错,如何抛出异常?

xuanxuan7676 发布于 2006-08-01 09:42, 1702 次点击

具体函数是这样的:
function TSysManagerDBAdapter.UpdateData(AType:String;AUpdateList:TObjectList):TStringList;
var sConn:TADOConnection;
// s:TStringList;
begin
AType:='update';
sConn:=dmSharer.GetConnByName('System');

roleDataSet:=TADODataSet.Create(nil);
roleDataSet.Connection:=sConn;
roleDataSet.UpdateBatch;

userDataSet:=TADODataSet.Create(nil);
userDataSet.Connection:=sConn;
userDataSet.UpdateBatch;

rightDataSet:=TADODataSet.Create(nil);
rightDataSet.Connection:=sConn;
rightDataSet.UpdateBatch;

urDataSet:=TADODataSet.Create(nil);
urDataSet.Connection:=sConn;
urDataSet.UpdateBatch;

moduleDataSet:=TADODataSet.Create(nil);
moduleDataSet.Connection:=sConn;
moduleDataSet.UpdateBatch;

AUpdateList.Insert(0,moduleDataSet);
AUpdateList.Insert(1,roleDataSet);
AUpdateList.Insert(2,userDataSet);
AUpdateList.Insert(3,urDataSet);
AUpdateList.Insert(4,rightDataSet);
if sConn<>nil then
begin
// s:=TStringList.Create;

try
sconn.BeginTrans;
moduleDataSet.ExecuteOptions;
urDataSet.ExecuteOptions;
rightDataSet.ExecuteOptions;
userDataSet.ExecuteOptions;
roleDataSet.ExecuteOptions;
sconn.CommitTrans;
except

end;
// s.Insert(0,' update');
// result:=s;
end;
moduleDataSet.Close;
moduleDataSet.Open;

urDataSet.Close;
urDataSet.Open;

rightDataSet.Close;
rightDataSet.Open;

userDataSet.Close;
userDataSet.Open;

roleDataSet.Close;
roleDataSet.Open;
end;
谁能告诉我怎样抛出异常呢?

4 回复
#2
volte2006-08-05 16:21

其实你用到了try......except...end这个抛出异常的功能。
在Object Pascal中是通过raise保留字来抛出异常的
比如raise Exception.create('File not Found');

不过看了一本书,介绍异常是不能随便滥用的。
写若干try...except ,和写数千个try...except是大有区别的。


通过异常从函数返回和正常从函数返回是没有什么区别的。
函数中的栈中的局部对象,会自动得到释放,而堆中的对象则不会。
Object Pascal的对象模型是基于引用的,其存在于堆中,而非栈中。
我们在通过异常从函数返回之前需要清理一些局域的对象资源。
try...finally正是解决这个问题的。

通过个人学习认为: try...except 是异常函数捕获到的异常而进行的处理,
而try...finally是异常函数本身对资源利用的清理工作。用于释放自身所用的资源。

#3
xuanxuan76762006-08-08 08:46
就是捕获异常进行处理,因为对数据库进行操作时,会出现用户添加,删除操作等的不合法,引起数据库表的异常,要实现捕获改异常并进行处理。
#4
volte2006-08-09 10:35
你没看我给你的回帖吗!

try
....
except
raise Exception.Create('');
end;

#5
xuanxuan76762006-08-16 15:20
明白了,多谢
1