如何使异常不抛出,程序正常运行?有请高手指点。。。

chenren70 2005-03-24 10:20:53
function TfServer.pUpdateData():integer;//修改数据
var
q1:TQuery;
begin
result:=-1;
dbDynamic.StartTransaction ;
try
try
q1:=TQuery.Create(nil);
with q1 do
begin
databasename:=dbDyNamic.DatabaseName ;
s:='update My_table set ....';
sql.add(s);
EXECSQL;
end;
except
on Exception do
begin
dbdyNamic.Rollback ;//出错回滚
raise;
end;
end;
finally
q1.Active :=false;
q1.Free;
end;
dbdyNamic.Commit ;
result:=0;
end;

如果更新数据出错,比如字段值太长,EXECSQL处就会捕捉到异常,并会抛出异常,必须点击弹出窗口程序才能继续运行;
如果我不要抛出异常,使程序正常运行(作为服务器,出现异常的用户,终止这次更新操作,但不能影响到别的用户操作),改如何做?谢先!!!
...全文
47 点赞 收藏 4
写回复
4 条回复
chenren70 2005年03月24日
dbdyNamic.Commit ;//移到这里搞定
except
on Exception do
begin
dbdyNamic.Rollback ;//出错回滚
//raise;
end;
end;
finally
q1.Active :=false;
q1.Free;
end;

result:=0;
end;
回复 点赞
chenren70 2005年03月24日
如果去掉raise,则会出现提示:“No user transaction is currently in progress”
回复 点赞
Kshape 2005年03月24日
不要抛出就可以了
比如
try
//....
except
//do nothing!!
end;
回复 点赞
ly_liuyang 2005年03月24日
不要raise就没错误提示了

http://lysoft.7u7.net
回复 点赞
发动态
发帖子
数据库相关
创建于2007-08-02

1209

社区成员

8.8w+

社区内容

Delphi 数据库相关
社区公告
暂无公告