| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1681 人关注过本帖
标题:进行数据的修改,若出错,如何抛出异常?
只看楼主 加入收藏
xuanxuan7676
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-7-20
收藏
 问题点数:0 回复次数:4 
进行数据的修改,若出错,如何抛出异常?

具体函数是这样的:
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;
谁能告诉我怎样抛出异常呢?

搜索更多相关主题的帖子: 数据 
2006-08-01 09:42
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 

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

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


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

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


大家都是朋友,有空就来坐坐!
2006-08-05 16:21
xuanxuan7676
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-7-20
收藏
得分:0 
就是捕获异常进行处理,因为对数据库进行操作时,会出现用户添加,删除操作等的不合法,引起数据库表的异常,要实现捕获改异常并进行处理。
2006-08-08 08:46
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 
你没看我给你的回帖吗!

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


大家都是朋友,有空就来坐坐!
2006-08-09 10:35
xuanxuan7676
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-7-20
收藏
得分:0 
明白了,多谢
2006-08-16 15:20
快速回复:进行数据的修改,若出错,如何抛出异常?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011646 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved