MyException - 我的异常网
当前位置:我的异常网» J2SE » 一篇好文,写得比较幽默,看者有分!解决方法

一篇好文,写得比较幽默,看者有分!解决方法(2)

www.MyException.Cn  网友分享于:2015-08-26  浏览:7次

除了Exception,还有Error啊,我的高人!如果close(rset)抛了一个Error,你的close(stmt), close(conn)不都歇菜了? 

后来,高人在《绝世武功补遗》里面解释说:Error代表不可恢复错误,说明整个排泄大业都受阻了,所以根本不应该试图对这种情况做任何处理,你也处理不了(自然也隐含此时你也根本无法擦屁股了的论断)。任何试图在这种情况下仍然固执擦屁股的做法都是倒行逆施,螳臂当车,必然被历史的车轮所撵碎。 

此书一处,天下辟易。其革命性之深远,难以估量。具有关方面评论,Sun这个公共厕所的try-finally这个工具的设定本身就是不合理的,应该被历史车轮撵碎的,因为try-finally居然试图在出现Error的时候去做一些事情!是可忍,孰不可忍? 
可以预见,try-finally将被sun彻底废弃,并且向广大公众做公开道歉以检讨多年来的欺骗造成的恶劣影响。 
另外,公厕的构造也受到质疑,因为一旦有一个拉客在擦的时候某一步无可挽回地失败(比如,太紧张,手一抖,纸掉到了坑里,又死活伸手捞不着),那么他就大摇大摆不再继续擦,而如果碰巧此人刚吃了萝卜,就会把整个厕所里的其它拉客都熏得无法继续。(想想一个app server吧。你一个程序歇菜,乐得请病假不擦了,别人也跟着倒霉?) 

嘿嘿,那么,你擦了吗?你肯定你擦了?擦干净了? 

幸好,我们翻遍上古秘籍,最终在北京山顶洞人的失传宝典《呼呼,擦!》中发现了一个据称绝对干净的擦法,那就是------------ 

一下一下擦! 

具体操作办法如下: 



代码 
void f(){ 
final Connection conn = ...; 
try{ 
final Statement stmt = ...; 
try{ 
final ResultSet rset = ...; 
try{ 
... 

finally{rset.close();} 

finally{stmt.close();} 

finally{conn.close();} 



其诀窍就是,每建立一个需要清理的资源,就用一个try-finally来保证它可以被清理掉。 

如此,任何时候,你都是屁股干干静静地离开卫生间。 

哪。好多圣人门徒跟我说:这样一下一下擦,姿势非常不雅观(看看那嵌套的try块吧),有违古礼。我们反对! 

靠,你说孔丑儿古还是山顶洞人古?? 
屁股还泛着味儿呢,还拽什么“雅”? 

而且,要是死要面子,也可以拉个帘子,擦的时候别让人看见嘛。比如: 



代码 
interface ResultListener{ 
void call(ResultSet rset); 

class SqlReader{ 
void read(ResultListener l){ 
final Connection conn = ...; 
try{ 
final Statement stmt = ...; 
try{ 
final ResultSet rset = ...; 
try{ 
l.call(rset); 

finally{rset.close();} 

finally{stmt.close();} 

finally{conn.close();} 




这一下一下擦的动作都藏在SqlReader这个帘子里,你直接在ResultListener里面拉不就行了? 

那位高人说了,这太复杂,就为了擦个屁股不值。 

这个嘛,值不值的另说,你那个简单,就是简简单单地擦不干净屁股。要不您干脆别擦得了,更简单呢还。反正您出门儿就愣说擦的是Chanel香水儿就是了。有啥比瞪眼儿说白话儿简单? 

对了, 我还忘了一个条款: 
就是擦屁股的时候按顺序擦。谁后进厕所的,要让人家先出去。 

“什么狗屁规则?“那位问了。 

这个这个--,啊,你猜猜~~~? 

嗯,对了,是这样的,上厕所都不着急,姗姗来迟,上课更不着急,更喜欢迟到了,对不对?而谁上课天天迟到早退还不担心毕业?当然是了,是不? 
人家都了,你还不让人家先出去?活腻味了你?(此处尾音要拉长,而且向上拐) 

反正啊,具体说,ResultSet最后创建,但是要先关。 

Statement其次。Connection最后。 

当然了,也许在你的环境下,次序错了也没出事情。但是,咱么吃软饭的(吃软件这口饭的)图啥?不就图个放心吗?上厕所图啥?不就图个别让抓去当兔子吗? 
也许某个driver对次序不敏感,但是不好说哪天你换个环境就忽然她奶奶的敏感了呢? 
比如吧,你有connection pool, conn.close()把connection返回到connection。 

你要是先conn.close(),好嘛,connection先回到pool了,正好别的线程里面等着要connection,立马这个connection又给分配出去了。 
这下齐了,你statement, resultset还没关呢,那边事故单位领导就找上门了。什么香油油的桌子,什么桐油炸丸子,全给你送来了。这不添堵吗? 

好在,在我们《呼呼,擦!》宝典中记载的“一下一下擦”神功,老少咸宜,童叟无欺,有道是:法擦大法好,不如法擦冰箱好! 

跑题了。反正是,只要你一个try-finally对应一个资源,你就不可能在次序上出错。自然而然的就是后入先出的堆栈结构。 
反观别的擦法,就没有这个效果,次序如何,全靠你自己掌握。弄错了,系统也不告诉你。等着吃桐油炸丸子吧。 

这也是我们推广一下一下擦的一个原因。


------解决方案--------------------
坐沙发JF~~
------解决方案--------------------
LZ做板凳去吧。。。
------解决方案--------------------
大致看了一下,基本都是擦屁股之类的?呵呵
------解决方案--------------------
...
------解决方案--------------------
呵呵,太强了
------解决方案--------------------
有点意思
------解决方案--------------------

文章评论

一个程序员的时间管理
一个程序员的时间管理
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
我的丈夫是个程序员
我的丈夫是个程序员
老程序员的下场
老程序员的下场
编程语言是女人
编程语言是女人
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
每天工作4小时的程序员
每天工作4小时的程序员
为什么程序员都是夜猫子
为什么程序员都是夜猫子
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
漫画:程序员的工作
漫画:程序员的工作
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
中美印日四国程序员比较
中美印日四国程序员比较
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员应该关注的一些事儿
程序员应该关注的一些事儿
 程序员的样子
程序员的样子
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
鲜为人知的编程真相
鲜为人知的编程真相
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
我是如何打败拖延症的
我是如何打败拖延症的
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
如何成为一名黑客
如何成为一名黑客
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员都该阅读的书
程序员都该阅读的书
10个调试和排错的小建议
10个调试和排错的小建议
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
代码女神横空出世
代码女神横空出世
那些争议最大的编程观点
那些争议最大的编程观点
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
旅行,写作,编程
旅行,写作,编程
程序员必看的十大电影
程序员必看的十大电影
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有