Profile磊的共享空间PhotosBlogLists Tools Help

Blog


    June 10

    最后的最后

    一直以来,一直坚持使用这里,即使菜园的兄弟姐妹都相继转到了baidu,sina等等,但我还是坚持着。
    对于这里,要是放弃的话,真的是舍不得。
    但是,每次打开这里都打不开,而且看到的都是不想看到的。
    最后的最后,我要放弃了。
    以后,就使用 http://hi.baidu.com/cicigaolei了,在哪里,不会再有不满,更多的是我从内心深处寻找的善良,挖掘我内心深处仅存的良知。
     
    to leidyzhang:
        感谢你的支持,我也好久没到你那里转转了。这里真的令我失望了,上次五一出去玩车祸了的事情也没往这里发,实在是打不开了。
        还有,咱们还是很象的,我没事的时候也喜欢在公司的厕所里照镜子,只是我是在男。。里,嘻嘻。而且,听你描述你们的。。怎么听着像是我们的。。呢。
    May 14

    赎罪

    现在的我真的像是在为我当初的决定赎罪。
    人在不了解对方的时候千万不能盲目追求,不然会后悔的。
    我现在真的很痛苦,每天自己跟自己较劲。
    就连我的哥哥都有点讨厌我了,我觉得这很正常,因为,我现在很讨厌我自己。
    因为我现在就拿不出当初那个人的魄力,我是懦夫,每天只知道跟自己较劲,虐带自己。
    现在偶尔静下心来看看自己,我到底怎么了,现在的这个人真的是我吗?我鄙视我自己的同时我真的佩服人的改造能力。
    我别改的以前引以为傲的东西现在统统不剩,就是想一想也有罪。
    也许真的该狠一下心了,好好考虑一下以后的日子,然后做个决定。
     
    毕竟这是我自己的人生,不是别人的。
    April 27

    最後のお願い

    恐怕我不能忍耐很久了,如果我忍不住了,对不起宝贝儿。
    今天宝贝儿跟我认错了,好像我从来没有收到这样的信息,一时间心里无法接受,贱坯子。我居然是这样说的:想想明天早上的太阳,没什么大不了的
    从开始我不会为了什么事情违背我自己的想法。后来,我学会了哄人,开始说一些心里并不那么想的事情,后来干脆说谎了,甚至可以说谎不带眨眼的。
    我已经不再是那个从小让人喜欢的人了。
    大学几年真的发生了很多事情,多到前18年都没有这么多。心情很复杂,后悔的同时还很怀念这段生活。这4年的变化实在太大了。
    工作后,虽然表面上过着平静的生活,但是对于我来说每天就像打仗一样。同样,每天都在发生着很多事情。最近真的后很多事情发生,我正在徘徊,宝贝儿,别把我推到悬崖上。
    不然我们真的要看着太阳,然后对着自己说没什么大不了的。
    April 05

    痛苦

    痛苦,每天的生活对于我来说都是一种煎熬。
    我不是坚强的人,我也不是乐观主义者,虽然我经常拿人开玩笑,也经常自嘲。但是,我的生活是阴暗的。
    我很痛苦,但同时也很胆小。
    每天都很痛苦,从早上,到晚上。厌倦工作,厌倦电话。
    只有睡觉不痛苦,并不是因为我喜欢睡觉,而是,睡觉时我就感觉不到痛苦了。
    最痛苦的还是我根本不能睡个踏实觉。
    经常,想到解脱,但我做不到。我很胆小
    经常,在自己的空间,想做点什么,想说点什么。每次打开之后,又什么都不作,再关上。
    我的生活有时真的很绝望。
    这不是你们能想象的。
     
    March 31

    3.31

    这是写在月底的东西,终于在本月中拿到了psp,哥哥也在今天拿到了ps2.
    今天回学校打球了,真爽。果然体力已经不行了,不行到了不能再不行了。但是今天打到了腿抽筋,已经好久没抽了。
    明天是愚人节,同样是静静的生日,总觉得是老天愚了她妈妈,于是静静出生了。(静静看到的话别生气。只是玩笑。)
    明天早上送王馨回北京。
    总之,这个月很好
    March 11

    聚会

    星期五和二昕的聚会,很好,很高兴。
    星期六毕君的生日聚会也很开心,还中了大奖,开心ing
    最近两天事情真不少,累死我了,很充实,今天看一天电影,休息一下。
    今天不玩小p
    February 27

    网通你真好

    总听别人说,这个慢,那个不好,网通真好,打网页慢,下载更慢,你还能再慢一点吗?

    网通你真好,磨我性子是吧。

    谢谢呀

    最近

    最近,总是想起以前的事情,即使是很小的事情,总是想起,包括细节。
    看来真的是老了,变成老家伙了。
    从快过年的时候到现在,总是发生不好的事情。不知道是不是本命年在作怪,和谁都打架。仔细想想还是我的过错比较大,和我爸打架,我妈。我的脾气真的越来越不好,本来就不能控制自己的脾气,这下可好,天天都痛快了。天天和别人干仗,现在,更爽,抱着瓶子,边喝边写(不是啤酒,我讨厌喝啤酒)。过瘾。
    本命年快过去吧。

    头发又长了

    出了正月,烫头发去,先说服我家的大小两个女领导。
    哈哈。
    绝对不要刘文气的爆炸式,省得想起阿布的胸毛假发。
    哈哈。
    February 26

    中国人上的4大当(转)

    第一大当:房产

      买房意味着什么?意味着你拥有了一个属于自己的房子。是的,你是这样以为,但是在中国你并无法拥有这个房子,只是租给你而已。因为房子是你的,地不是你的,只是把土地使用权租借给你70年(从现在退70年那是抗日战争时期,谁见过那时候的房子?)。房子通常情况下30年左右就会遇上拆迁或者旧房改造。也就是说你花了买房的钱,却只能得到租房的实际效果。当然这还不是最坏的。最坏的是,当几十年后你发觉上当了!有一群流氓冲进你用一辈子积蓄买下的房子,画上一个大大的拆字!然后把你的家当全部当垃圾一样的仍出门外,不顾你的苦苦哀求,甚至还在报纸上给你按一个钉子户的臭名,任大众辱骂的时候你就会知道什么叫做绝望!

      形容中国的房地产有一个很有名的笑话是这样写的:

      以前,有个地主有很多地,找了很多长工干活,地主给长工们盖了一批团结楼住着,一天,地主的谋士对地主说:东家,长工们这几年手上有点钱了,他们住你的房子,每月交租子,不划算,反正他们永远住下去,你干脆把房子卖给他们起个名堂叫做——公房出售!告诉他们房子永远归他们了,可以把他们这几年攒的钱收回来,地主说:不错,那租金怎么办?谋士说:照收不误,起个日本名儿,叫物业费!地主很快实行了,赚了好多钱,长工们那个高兴啊!

      过了几年,地主的村子发展成城镇了,有钱人越来越多,没地方住,谋士对地主说:东家,长工们这几年手上又有钱了,咱们给他们盖新房子,起个名堂叫做旧城改造,他们把手上的钱给我们,我们拆了房子盖新的,叫他们再买回去,可以多盖一些卖给别人,地主又实行了,这次,有些长工们不高兴了,地主的家丁派上用途了,长工们打掉牙只好往肚子里咽,地主又赚了好多钱。

      又过了几年,地主的村子发展成大城市了,有钱人更多了,地主的土地更值钱了,谋士对地主说:东家,咱们把这些长工的房子拆了,在这个地方建别墅,拆出来的地盖好房子卖给那些有钱的大款还能赚一笔,地主说:长工们不干怎么办?谋士说:咱给他们钱多点儿,起个名堂叫货币化安置,咱再到咱们的猪圈旁边建房子,起个名堂叫经济适用房,给他们修个马车道让他们到那边买房住,地主说:他们钱不够怎么办?谋士说:从咱家的钱庄借前给他们,一年6分利,咱这钱还能生钱崽,又没风险,地主又实行了,长工们拿到钱,地主的经济适用房到现在才建了一间,长工们只好排队等房子,直到现在,还等着呢……

      于是,长工们开始闹事了,地主有点慌,忙问谋士怎么办?谋士说:赶紧通知长工们,房子要跌价了,别买了,租房住吧,正好把我们的猪圈租给他们,结果,这么多年后,长工们的钱全没了,还在租房住,直到永远!

      这个笑话虽然有点夸张,但实际上这何尝又不是事实呢?有人说既然如此?为什么中国人还要买房?疯了一样的买?为什么?还不是愚民教育的结果,就好象60 年代,鼓吹人们必须购买三大件:手表、缝纫机、自行车才算是成功人士才可嫁人娶妻。70年代鼓吹人们必须购买新四大件:电视,冰箱,洗衣机,装电话才算是出人头地才可娶妻生子一样,记得当年装电话可是要几千块钱一部啊(人均收入不到200的小城),而北京上海更有上万一部的时候,还得排队买号搭人情,和今天的买房又何其相似?

      而今天所有的狗屁学者又开始了这一套愚弄百姓的旧招:白领一族新标准,成功人士新选择X环X路小户型,X环X路商住型。收了你几十万后,还得每个月收你租金(新物业费),银行利息,以及各种巧立名目的加息、政策等等等等。总之不怕你不被整死,就怕你死得不够惨!老百姓咋就怎么乐于上当,而且百上不厌呢?我真是气得浑身都湿了!

      第二大当:就业

      当有人终于开始感叹:当年当知青的时候,当有人下岗之后感到没有生路,只能静坐抗议却无人理会,只能沦落街头还被人编首歌嘲笑着人生豪迈,重头再来的时候。你可曾想过!他们也曾经和今天的白领一样风光!他们的收入和地位也曾经让周围的人艳羡不已?你可曾想过20年后的今天!你一样会和他们一样沦落街头,众叛亲离?!

      有人说嘿!你不知道有失业保险,养老保险,XX保险么?呵呵,我在北京漂泊N年,交了无数保险大概有好几万吧,但失业的时候跑断腿也没人给我啥保险,反而很多保险都被冻结了说我交得断断续续的,我简直又气得……这还不算,你以为你到了60岁真的就可以拿到养老保险了吗?天上又不会掉钱!今天的老年人拿的退休金是我们在挣!而今天30-40岁的人通常都有好几个兄弟姐妹!意思就是,今天的老年人能在60岁拿到养老保险是因为有5个人供一个老人!而我们这一代老去之后则是一个人供我们两个老人!钱从哪里来?没得来!您要是能活到90岁估计能领到一些养老保险,嘿保重吧您。然而即使是这样,家长们还是疯了一样的把孩子往各种企事业国有单位里送,我身边就经常有这样的例子。我老家一个远房亲戚,找关系拖朋友,花了七万块钱通过公开招聘把儿子送进了交警队,干上合同制的police。一个月拿800块。结果第三年被竞争上岗给刷下来了。一家人哭哭啼啼,我说刷了好,你上那班一辈子挣不回那七万,赶紧先洗洗睡,改明再凑点钱做小生意去吧!没准还能赚点。

      当年我毕业的时候,我不文明用语也是领着我抱着钱,把我往XX部送。我一看负责招工那人那德行,就忍不住的恶心,再一看薪水,不文明用语呀,我这不是白干10年不吃不喝才拿回成本。所以我私下威胁了那家伙一把,吓得那个大腹便便的X科长再也不敢招收我。我才得已:离家出走。

      我就想不明白?中国人咋就这么傻?这么迷信国字呢?醒醒吧,思维正常一点行不?做事之前自己算算合算不合算成不?

      还有那些年纪轻轻的小白领们,找工作最好把薪水要高点,别要医疗保险和啥保险,然后自己把钱存起来最保险,将来用得着。

      第三大当:教育

      一张文凭值多少钱?一张文凭值多少钱?一张文凭值多少钱?印刷成本两块钱顶了天了。一个老师工资多少?嘿,两个学生的学费足够一学期了!一个班的书本印刷多少钱?两个学生的足够了!一个班房租多少钱一学期?嘿嘿两个学生足够了。!嘿!中国教育你凭啥收那么多钱!?

      嘿!百姓们!我们为啥要上当?因为从小统治阶级就告诉我们考上秀才才光荣。哦对不起我说错了,是考上大学才光荣。但老百姓从来不去想一想为什么光荣?为什么光荣…… 大学秀才又怎样还不是废物!

      你知道你的孩子是什么人在教么?在中国一般是无法适应社会的人才会沦为一个教师,举个例子。前段时间我因为一个项目的关系,找了几个大学的硕士生做程序。结果有几个人笨得很,完全不给你考虑,非得你守着才干活,而且给个文件明显有一个错别字,也不给改,等你发现了还跟你较真,是这不是他的错,是你给的就是错的。一点责任感,一都不会考虑究竟是为了做事而做事还是为了做好一件事而做事。我还是很心平气和的给他们讲道理:你们必须学会为别人思考,思考别人想要什么结果再去做事情。否则无法在社会上生存。结果那几个说:我们才不要去社会上,我们考试成绩好得很,学校要我们留校做老师。再说了本来我们就没什么错,你怎么安排我们怎么做,你不安排我们就不做。这是我们的尊严和原则。我说:如果你去守门,老板没安排你下班的时候锁好仓库你就不锁了吗?您心寒吗?以后您的孩子就是在这样的人的指导下学习和成长。您放心么?

      难怪现在读大学的同居,逃课,打架,自杀…… 但家长们还是愿意花钱把孩子送进学校去,而且是花一辈子的钱。

      第四大当:买车

      中国人疯了吗?买车?为什么要买车???当然您有了钱花不光了,您爱怎么买怎么买,买车买房,反正油价怎么涨你也花不完钱,房子要拆迁你也不心疼。但是大多数老百姓呢?

      我以前有个同事住北二环,公司西直门那里。每天坐地铁上班最多半小时。可非得买一二手夏利,每天早上8点开始在路上堵着,然后一点一点的挪到公司。嘿,一个月停车费都不少。可人家就觉得开了车自己身份高级一点。别说开个夏利,就是开个奥迪我也没见谁对谁三磕九拜。除了显得自己比别人傻一点外完全没有别的作用。

      还有一次,我遇见一个月收入才4000的小姑娘,在计划贷款买车。于是我就问她:小姑娘,你又没做生意,自己按时上班,地铁又方便,买车干什么呢?想了半天,实在估计也想不出什么理由来了就说:有时候去超市买东西吧,打车又觉得近了点不划算,走路又远了点。所以自己开车去了!听得我差点没恶心死。你开车去超市买个方便面不觉得恶心么?装备了大哥大去拣垃圾,也是拣垃圾的!别以为买了车能证明什么。

      比如我现在自己做生意,很忙,一天大概要跑4-5个地方,见很多客户。但我就不买车,为什么?我打车随招即来,打完就走,不用担心停车没地方,不用担心挂了碰了,不用担心被贼偷了绑了,无论挂风下雨都有司机。万一碰着个堵车还可以下车坐地铁。一年也就一万多块RMB!要买一车!一年停车费都得一万多!这不是傻么?

      说别买车别买车,可就有无数的人疯了一样的去贷款买?一定要嫌自己将来死得不够惨似的!买吧,买完了加息了不是?油价涨疯了不是?停车又贵了不是?后悔了不是?新车一上路就掉价了卖也卖不掉了不是??

      告诉你,油价还得涨。一定要涨到和美圆一样的油价。嘿嘿!您拿老美1/10的收入,养和人家一个价的汽油。我看您还得瑟不。

      最后说一句,每个人都不傻,都是从小被愚民教育给弄啥了。傻点不要紧,但性命悠关的事儿您还是紧着点,多盘算盘算经济利益之间的关系!别到头来,房产一跌,油价一涨,交了半辈子钱拿了毕业证还是啥啥不会干,交了几十年苛捐杂税还啥啥福利没有。您亏的可不仅仅是差价几十万。

      有人还说什么?哎呀没办法,难道不住了,不买车啦,公车好挤呀。我说全是愚民教育出来的虚荣心在做怪。您看看我,租一个房子住才一千多块一个月,也就相当于有些人的物业费。如果要结婚我还租得起3-4千的,家具装修一应具全。而且还哪方便我住哪儿。不想搬就长期租。也和交物业费一个样。还白白省出还银行贷款、利息、首付一大堆。有事就打车,没事就地铁,一年一万顶天了,还省了车库费,停车费,罚款等一堆,油价涨到10块也乐呵,也不耽误事。俺大学没念完就跑了,一边自学一边自己钻研市场出策划跑业务,不也同样可以进外资企业,上市企业做经理么?还省出好几万学费来。

      当然有的人会说:你连个房子都不买,指定结不了婚。我心想:我是没有,您以为您有啊?有人说租房子不划算,租完了还是别人的,嘿嘿,你以为买房子还了几十年贷款,还清了就是你的了啊……
    February 18

    大年初一

    新年到,祝愿大家在新的一年里,身体健康,万事如意,心想事成。
    February 16

    大年29

    到了一年一度的新年了,咱们中国人的传统节日。
    从来就没有过大年三十上班的经历,今年要体验一下了。
    心中的感觉很复杂,工作了,向成年迈近了一步,虽然不想这样,但是已经是男子汉了,不能总躲在家长的身后呀。
    但是心理上明明还是小孩子,说句好听的就是童心未泯,说句难听的。。。
    一年一年的过去,对于过年已经不那么期待了,期待新衣服,期待压岁钱,期待兄弟姐妹们一起开行的玩耍,期待放炮,期待。。。
    大家都有各种各样的事情。
    总之,如果明天不能给大家拜年的话,今天在此给大家拜个年,祝大家身体健康,万事如意。
    February 15

    整理

    过两天不忙的时候,整理一下这里。感觉这里都快被遗弃了,那就叫做[磊的废墟]--哈哈!
    整理如下:
    1. 加上E.T.的链接
    2. 整理布局
    3. 增加个留言什么的
    4. 弄个好听的歌
     
    如果大家还有什么指摘,请提出来,我一一对应。
     
    February 14

    情人节

    今天是一年一度的情人节,我和宝贝儿都对这个节日不感冒。
    嘻嘻,简单的道个节日快乐就得了。一切还要从明年开始。
    明天,灭灭就要回来了。对于灭灭,怎么说呢,本人还是非常欣赏的,独立,勇敢。。。。。等等。这次见到灭灭很可能很长时间就不能再见了。明年她从广州回来,我可能已经不在天津了。灭灭在的时候没觉得有什么感觉。但是,从一月开始便觉得不一样了,不论E.T,还是毽儿协。我知道不止是对于灭灭,对于大家,都是一个道理。因为我们是一家人。所以,我不能太投入,对于和大家每次的聚会的尽兴,我背后的伤心又有谁知道,真的舍不得大家呀!
     
    今天有好事,宝贝儿的公司过年发了5000现金,还有很多东西。嘻嘻,买个4g的棒子。哈哈,买个正版的游戏。哈哈。
     
    February 13

    头发长了

    在回头的一瞬间,眼睛痛了一下,仿佛被什么东西扎了一下。
    才意识到,原来是头发长了。
    头发这么长的时候还要追溯到十年之前。
    试着长到大家都受不了为止。
    February 10

    忘年会,生日,聚会

    看题目便知道今天真的很忙,嘻嘻。
    首先,是一年一度的忘年会,今天的大奖居然没得到。
    和高中同学的聚会在半年前
     
    February 09

    psp

    关于psp,真的不想多说了,天天泡坛子,看网站。
    都成半个专家了。
    就是眼看着我的psp那不到手。
    55555
    到了刷完机的时候,嘿嘿,玩他一宿(真没出息)。
    嘻嘻。
    天天除了java,就是日语。再这样下去真的日语1级都不在话下了。
    来点活吧,求你了,让我加班吧。
    我也来个夹一宿班。
     
     
    想起呀,想起这么两句话来。谁跟我说的想不起来了:生书熟戏,听不腻的曲艺。。。。。。。。。
    怎么。。。。听出来了吗?
    知道是谁的话,有奖励的。
     
    应该是这句台词:
    大家都来加班吧,加班多好呀!
    知道这句也有奖。
     
    如果都知道,。。。。。就把我送给你。嘻嘻(仅限女士,年龄24一下,貌若天仙。。。。。。。)
    February 08

    七武士

    还真用这个名字了,不更新就好久都不更新,就不能新。
    要更新就更新好多,习习,连着写。
    想说什么来着?还真忘了。
    对了
     
    死鬼子们,都死去吧。(由于星期日参观了抗日战争纪念馆)
    震撼,好多人对于日本人参观靖国神厕感到气愤,你们倒是看看抗日战争纪念馆去呀,跟别人说我在日企工作,大家不是很理解,我们是汉奸?
    我敢说真动起真格的,满嘴爱国的人们,不一定比我们敢于行动。
    信不信?
    大家都恨日本人,psp吧上怎么大家都对于sony的亏损都跟死了娘一样呢?你们说说,那是我们开的吗?天天日本的东西好,比我们好。死去吧。
    天天骂联想垃圾,神州不行。就你们行,还有人说日货不买运动是对我们自己的损失,去你大爷的,为什么会有鸦片战争,为什么鬼子们把卖给我们的东西上印上 完全国货 ?
    知道日本的团块时代吗?那是现在的50-60岁左右的人们吧,战败了,拼了一生的命,国家富强了。我们现在的人们,很少有那种精神,个人认为我们的社会风气不好,领导者(独裁者)的政策有问题。
     
    作为一名汉奸,很想把天皇宣布无条件投降的声音当作铃声,有日本人欺负我们就打死小鬼子,我们就是这样的汉奸。
    国人当自强呀。

    想来想去,都没决定用什么标题。
    最后,居然用了个电影的名字,汗,下次用 七武士,再下次,罗生们。
    晕,黑泽明。虽然是日本人。就好像松下幸之助,可惜了。真的偶像,不像是什么影视歌星。
     
    跑题了拉回来。
    懒死了,已经多久没更新了,已经不知道了。可能有人以为我一定是很忙,可是,谁能想到我天天忙到了,就差睡一天了(要不是固定ip,早就top10了)。
    越闲着越懒,什么都不想干,忙的加班的时候,也没忘更新一下自己的空间。现在,。。。。。乱,(点名主题了,这语文,爆强)
    乱。。。。。。我等了好久得小p(psp),还不能玩。没法再郁闷了,从一开始决定买ds,到决定买小p。再到买完带不回来。
    头发都快白了,不过,还是要感谢灭灭。辛苦她了,都胖了10斤了,嘻嘻。
     
    还是,经常抽空更新一下吧。
    天天这样下去也不是办法呀。
    对吧!
    大家
     
    乱。。。。。(扣题,突出主旨)
    December 18

    javaの異常について

    java 异常 


    你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 


    1 OutputStreamWriter out = ...

    2 java.sql.Connection conn = ...

    3 try { // ⑸

    4    Statement stat = conn.createStatement();

    5    ResultSet rs = stat.executeQuery(

    6    "select uid, name from user");

    7    while (rs.next())

    8    {

    9       out.println("ID:" + rs.getString("uid") // ⑹

    10     ",姓名:" + rs.getString("name"));

    11   }

    12   conn.close(); // ⑶

    13   out.close();

    14 }

    15 catch(Exception ex) // ⑵

    16 {

    17    ex.printStackTrace(); //⑴,⑷

    18 }




      作为一个Java程序员,你至少应该能够找出两个问题。但是,如果你不能找出全部六个问题,请继续阅读本文。 


      本文讨论的不是Java异常处理的一般性原则,因为这些原则已经被大多数人熟知。我们要做的是分析各种可称为“反例”(anti-pattern)的违背优秀编码规范的常见坏习惯,帮助读者熟悉这些典型的反面例子,从而能够在实际工作中敏锐地察觉和避免这些问题。 


      反例之一:丢弃异常


      代码:15行-18行。 


      这段代码捕获了异常却不作任何处理,可以算得上Java编程中的杀手。从问题出现的频繁程度和祸害程度来看,它也许可以和C/C++程序的一个恶名远播的问题相提并论——不检查缓冲区是否已满。如果你看到了这种丢弃(而不是抛出)异常的情况,可以百分之九十九地肯定代码存在问题(在极少数情况下,这段代码有存在的理由,但最好加上完整的注释,以免引起别人误解)。 


      这段代码的错误在于,异常(几乎)总是意味着某些事情不对劲了,或者说至少发生了某些不寻常的事情,我们不应该对程序发出的求救信号保持沉默和无动于衷。调用一下printStackTrace算不上“处理异常”。不错,调用printStackTrace对调试程序有帮助,但程序调试阶段结束之后,printStackTrace就不应再在异常处理模块中担负主要责任了。 


      丢弃异常的情形非常普遍。打开JDK的ThreadDeath类的文档,可以看到下面这段说明:“特别地,虽然出现ThreadDeath是一种‘正常的情形’,但ThreadDeath类是Error而不是Exception的子类,因为许多应用会捕获所有的Exception然后丢弃它不再理睬。”这段话的意思是,虽然ThreadDeath代表的是一种普通的问题,但鉴于许多应用会试图捕获所有异常然后不予以适当的处理,所以JDK把ThreadDeath定义成了Error的子类,因为Error类代表的是一般的应用不应该去捕获的严重问题。可见,丢弃异常这一坏习惯是如此常见,它甚至已经影响到了Java本身的设计。 


      那么,应该怎样改正呢?主要有四个选择: 


      1、处理异常。针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理,要根据具体的情形确定应该采取的动作。再次说明,调用printStackTrace算不上已经“处理好了异常”。 


      2、重新抛出异常。处理异常的代码在分析异常之后,认为自己不能处理它,重新抛出异常也不失为一种选择。 


      3、把该异常转换成另一种异常。大多数情况下,这是指把一个低级的异常转换成应用级的异常(其含义更容易被用户了解的异常)。 


      4、不要捕获异常。 


      结论一:既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。 


      反例之二:不指定具体的异常 


      代码:15行。 


      许多时候人们会被这样一种“美妙的”想法吸引:用一个catch语句捕获所有的异常。最常见的情形就是使用catch(Exception ex)语句。但实际上,在绝大多数情况下,这种做法不值得提倡。为什么呢? 


      要理解其原因,我们必须回顾一下catch语句的用途。catch语句表示我们预期会出现某种异常,而且希望能够处理该异常。异常类的作用就是告诉Java编译器我们想要处理的是哪一种异常。由于绝大多数异常都直接或间接从java.lang.Exception派生,catch(Exception ex)就相当于说我们想要处理几乎所有的异常。 


      再来看看前面的代码例子。我们真正想要捕获的异常是什么呢?最明显的一个是SQLException,这是JDBC操作中常见的异常。另一个可能的异常是IOException,因为它要操作OutputStreamWriter。显然,在同一个catch块中处理这两种截然不同的异常是不合适的。如果用两个catch块分别捕获SQLException和IOException就要好多了。这就是说,catch语句应当尽量指定具体的异常类型,而不应该指定涵盖范围太广的Exception类。 


      另一方面,除了这两个特定的异常,还有其他许多异常也可能出现。例如,如果由于某种原因,executeQuery返回了null,该怎么办?答案是让它们继续抛出,即不必捕获也不必处理。实际上,我们不能也不应该去捕获可能出现的所有异常,程序的其他地方还有捕获异常的机会——直至最后由JVM处理。 


      结论二:在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。 


      反例之三:占用资源不释放 


      代码:3行-14行。 


      异常改变了程序正常的执行流程。这个道理虽然简单,却常常被人们忽视。如果程序用到了文件、Socket、JDBC连接之类的资源,即使遇到了异常,也要正确释放占用的资源。为此,Java提供了一个简化这类操作的关键词finally。 


      finally是样好东西:不管是否出现了异常,Finally保证在try/catch/finally块结束之前,执行清理任务的代码总是有机会执行。遗憾的是有些人却不习惯使用finally。 


      当然,编写finally块应当多加小心,特别是要注意在finally块之内抛出的异常——这是执行清理任务的最后机会,尽量不要再有难以处理的错误。 


      结论三:保证所有资源都被正确释放。充分运用finally关键词。 


      反例之四:不说明异常的详细信息 


      代码:3行-18行。 


      仔细观察这段代码:如果循环内部出现了异常,会发生什么事情?我们可以得到足够的信息判断循环内部出错的原因吗?不能。我们只能知道当前正在处理的类发生了某种错误,但却不能获得任何信息判断导致当前错误的原因。 


      printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,但只提供了一些最基本的信息,未能说明实际导致错误的原因,同时也不易解读。 


      因此,在出现异常时,最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。 


      结论四:在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。 


      反例之五:过于庞大的try块 


      代码:3行-14行。 


      经常可以看到有人把大量的代码放入单个try块,实际上这不是好习惯。这种现象之所以常见,原因就在于有些人图省事,不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体类型是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大箱子,虽然东西是带上了,但要找出来可不容易。 


      一些新手常常把大量的代码放入单个try块,然后再在catch语句中声明Exception,而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难,因为一大段代码中有太多的地方可能抛出Exception。 


      结论五:尽量减小try块的体积。 


      反例之六:输出数据不完整 


      代码:7行-11行。 


      不完整的数据是Java程序的隐形杀手。仔细观察这段代码,考虑一下如果循环的中间抛出了异常,会发生什么事情。循环的执行当然是要被打断的,其次,catch块会执行——就这些,再也没有其他动作了。已经输出的数据怎么办?使用这些数据的人或设备将收到一份不完整的(因而也是错误的)数据,却得不到任何有关这份数据是否完整的提示。对于有些系统来说,数据不完整可能比系统停止运行带来更大的损失。 


      较为理想的处置办法是向输出设备写一些信息,声明数据的不完整性;另一种可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一次性输出。 


      结论六:全面考虑可能出现的异常以及这些异常对执行流程的影响。 


      改写后的代码 


      根据上面的讨论,下面给出改写后的代码。也许有人会说它稍微有点啰嗦,但是它有了比较完备的异常处理机制。 


    OutputStreamWriter out = ...

    java.sql.Connection conn = ...

    try {

       Statement stat = conn.createStatement();

       ResultSet rs = stat.executeQuery(

       "select uid, name from user");

       while (rs.next())

       {

          out.println("ID:" + rs.getString("uid") +

          ",姓名: " + rs.getString("name"));

       }

    }

    catch(SQLException sqlex)

    {

       out.println("警告:数据不完整");

       throw new ApplicationException(

       "读取数据时出现SQL错误", sqlex);

    }

    catch(IOException ioex)

    {

       throw new ApplicationException(

       "写入数据时出现IO错误", ioex);

    }

    finally

    {

       if (conn != null) {

          try {

             conn.close();

          }

          catch(SQLException sqlex2)

          {

              System.err(this.getClass().getName() +

              ".mymethod - 不能关闭数据库连接: " +

              sqlex2.toString());

          }

       }


       if (out != null) {

          try {

             out.close();

          }

          catch(IOException ioex2)

          {

             System.err(this.getClass().getName() +

             ".mymethod - 不能关闭输出文件" +

             ioex2.toString());

          }

       }

    }


      本文的结论不是放之四海皆准的教条,有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心,务必加上详细、全面的注释。 
      另一方面,不要笑话这些错误,不妨问问你自己是否真地彻底摆脱了这些坏习惯。即使最有经验的程序员偶尔也会误入歧途,原因很简单,因为它们确确实实带来了“方便”。所有这些反例都可以看作Java编程世界的恶魔,它们美丽动人,无孔不入,时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事,不足挂齿,但请记住:勿以恶小而为之,勿以善小而不为。