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

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处就会捕捉到异常,并会抛出异常,必须点击弹出窗口程序才能继续运行;
如果我不要抛出异常,使程序正常运行(作为服务器,出现异常的用户,终止这次更新操作,但不能影响到别的用户操作),改如何做?谢先!!!
...全文
180 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧