[高分]关于DB层,如何实现失败重试一次?

HimeTale 2008-10-09 10:35:49
大意就是所有的数据库请求都经过这个层
失败的时候由这个层再做一次


没想到具体的实现方法
做过类似框价的给我讲讲原理或让我看看代码吧

...全文
188 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
hangang7403 2008-10-14
  • 打赏
  • 举报
回复
sxmonsy 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 HimeTale 的回复:]
原始需求是:所有操作数据库的函数,如果遇到数据库异常,就重新执行一次.
[/Quote]
try
{
//执行第一次操作
}
catch
{
// 失败后再执行一回
};
shulei521 2008-10-11
  • 打赏
  • 举报
回复
..........
JeffChung 2008-10-11
  • 打赏
  • 举报
回复


我也认为这种东西只是一个小技巧,跟什么层没关系,也不应该搞成什么框架
  • 打赏
  • 举报
回复
唉,说白了,就是简单的流程控制问题。跟循环语句、分支判断之类的类似。在“分层”这种看似很高级的问题下,简单的流程控制代码反而没胆量写出了。
  • 打赏
  • 举报
回复
上面这个abc例子,不管你放在哪一个“层”中,都是差不多的。它就是一种“方法执行失败重试一次”的小问题。

实际上,这更层有什么关系?没有什么实质的关系。任何层中均可以考虑这更本原的设计问题。
  • 打赏
  • 举报
回复
少写一个分号哦。
  • 打赏
  • 举报
回复
假设原来的方法是

public void abc(object arg)
{
....
}

那么,你可以把它改个名字叫做_abc,然后再写一个abc方法:

public void abc(object arg)
{
try
{
_abc(arg)
return; //第一次就成功啦
}
catch
{
};
thread.sleep(100); //不使用100,在一个范围内取得一个随机数更好。
_abc(arg); //这一次如果发生异常,会正常抛出。
}

delphi_new 2008-10-10
  • 打赏
  • 举报
回复
关注,这帖子肯定很火
redfox241 2008-10-10
  • 打赏
  • 举报
回复
try
{
first connection
}
catch
{
try
{
}
catch
{
second connection
}
}
qinhl99 2008-10-10
  • 打赏
  • 举报
回复
明白楼主的意思,但不建议都这么做!为什么要这么做呢?
redfox241 2008-10-10
  • 打赏
  • 举报
回复
try
{
first connection
}
catch
{
try
{
second connection
}
catch
{

}
}
  • 打赏
  • 举报
回复
如果这也成为框架了,就是学java社区中常见的那种过度设计、架空框架的做法了。
  • 打赏
  • 举报
回复
例如原来有个方法 abc,你把它改个名字,然后重新写一个abc,调用前边那个。
wwbjj007 2008-10-09
  • 打赏
  • 举报
回复
不太明白楼主的意思????
zero8500 2008-10-09
  • 打赏
  • 举报
回复
建个数据操作层就可以了
zero8500 2008-10-09
  • 打赏
  • 举报
回复
建个数据操作层就可以了
kingcsx666 2008-10-09
  • 打赏
  • 举报
回复
kao,失败了还继续操作,大部分同意失败,让用户决定把
paulin 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 HimeTale 的回复:]
原始需求是:所有操作数据库的函数,如果遇到数据库异常,就重新执行一次.
[/Quote]
在DB层函数返回值多设置几个,包括数据库异常,系统异常,参数异常等
然后调用层根据返回值判断,进行想要的操作,包括提示,重新执行等
DemonAngle 2008-10-09
  • 打赏
  • 举报
回复
帮顶
加载更多回复(9)

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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