Topic: 高手请看这个逻辑有没有问题

  Print this page

1.高手请看这个逻辑有没有问题 Copy to clipboard
Posted by: lfaonline
Posted on: 2005-10-31 10:08

public void test(){
conn = null
try{
conn = getconnectiong();
*****
}catch (SQlException ex){
try{
conn.rollback();
conn.close();
test(); //主要在这里
}catch(){
}
//这里是否还应该加finally
}

finally{
try{
conn.close();
****
}catch(){
}
}

}

2.Re:高手请看这个逻辑有没有问题 [Re: lfaonline] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-31 10:31

如果出现异常,是个死循环

3.Re:高手请看这个逻辑有没有问题 [Re: lfaonline] Copy to clipboard
Posted by: lfaonline
Posted on: 2005-10-31 10:51

这且不管它,调用方法本身也是特定条件下才调用的,我的意思是,如果只出现一次异常,会不会出现conn连接泄漏?有无必要加那个finally? thank

4.Re:高手请看这个逻辑有没有问题 [Re: lfaonline] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-31 11:07

不用加那个finally, 但是你这么写比较危险,呵呵, 弄不好就overstack了,呵呵

5.Re:高手请看这个逻辑有没有问题 [Re: lfaonline] Copy to clipboard
Posted by: lfaonline
Posted on: 2005-10-31 12:41

这是个TAF的东东,它的理论就是CATCH到某几个特定的错误后再重新获得连接,重新提交,这本身就存在死循环啊,当然这只是几个特定的错误,不死循环靠RAC来保证.

6.Re:高手请看这个逻辑有没有问题 [Re: lfaonline] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-31 16:31

没接触过TAF,RAC方面的东东,呵呵

我觉得改一下可能好一些,原来的可能会出现一层压着一层的情况, 用一个boolean变量来控制循环, 如果获得特定错误,那么就等一段时间,重新尝试连接, 我改了一下,你当然可以做更好的修改,呵呵

public void test(){
conn = null
boolean flag=true;
while(flag)
{

try{
conn = getconnectiong();
*****
flag=false;
}catch (SQlException ex){
  

try{
if(conn!=null)
{
conn.rollback();

}

}catch(...){
...
}

flag=true;
delay();//产生一段时间的延时以便重新尝试连接
}catch(Exception other_ex) //处理其他异常, 不进行重新连接尝试
{

  flag=false;
  ...

}finally{

   try{
   if(conn!=null)
   {
    conn.close();
    conn=null;
   }
  
   }catch(...){
   ...
   }
}

}
...
}

7.Re:高手请看这个逻辑有没有问题 [Re: lfaonline] Copy to clipboard
Posted by: lfaonline
Posted on: 2005-11-01 10:28

我的完整的程序就是这样的,有延迟的,而且也会catch其他的异常,这时也不会死循环的,我只是把觉得有疑问的地方写出来了,呵呵,多谢!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923