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 |