Subject:
[讨论]关于异常
[Print This Page]
Author:
jAmEs_
Time:
2007-8-17 17:43
Subject:
[讨论]关于异常
一般情况下,异常都采用
try
except
end;
的形式来截获,但是这样的嵌套多了的情况下,代码越来越难看,又或者我们数据库处理事务时,一般都:
con.BeginTrans();
try
...
con.CommitTrans();
except
con.RollbackTrans();
end;
有没有一种类似这样的方法:
AutoTrans(con);
...
其实主要就是怎么实现在作用域内,AutoTrans可以检测到异常退出调用还是正常退出。
还原探讨~~
Author:
Passion
Time:
2007-8-17 19:46
把AutoTrans写成函数,里头用try except
Author:
zzzl
Time:
2007-8-17 20:11
同意楼上,把看不顺眼的东西藏起来
Author:
jAmEs_
Time:
2007-8-17 21:58
QUOTE:
原帖由
Passion
于 2007-8-17 19:46 发表
把AutoTrans写成函数,里头用try except
晕,但是我是希望能通用化啊,你那样还不是一样?
Author:
shenloqi
Time:
2007-8-18 21:08
我有一些尝试,用接口的自动引用计数等实现的,不过个人还是觉得不如直接try ... except ... end来的明了
Author:
kendling
Time:
2007-8-19 01:25
对哇,简单的东西不要搞得太复杂。。。
Author:
jAmEs_
Time:
2007-8-19 14:10
其实就是为了简单才这样
你们听说过方面编程吧?我想这个也有这样类似的目的
比如你的代码原来没有这方面的处理,如果要增加,我直接增加一行就行了,但是try except end 则要做比较多的代码处理。
Author:
skyjacker
Time:
2007-8-19 20:42
数据库的事务处理可以封装在基类里,这个一个系统中就只有一份代码啦。
Author:
bahamut8348
Time:
2007-8-29 10:19
涉及数据库的"事务",个人建议,像:
con.BeginTrans();
try
...
con.CommitTrans();
except
con.RollbackTrans();
end;
这种语句不建议写在EXE工程里(当然包括DLL),
个人认为,完全可以在SQL(ORCALE)里写一个存储过程,由存储过程控制事务总数和事务的开启、关闭,而在工程里要做的只是调用这个存储过程,并给他传递正确的参数就可以了
Author:
Passion
Time:
2007-8-29 14:25
确实写存储过程里头高效不少。
Author:
jAmEs_
Time:
2007-8-29 16:20
大家讨论的似乎有些跑题了,我只是举例子而已,类似的情况还是有的,而不只是这个。
另外,我说说自己的一些观点,存储过程也有一定的限制,比如调试没那么方便,管理也不一定方便。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0