ITEM 77: 不要忽視異常

ITEM 77: DON’T IGNORE EXCEPTIONS
??雖然這個建議看起來很明顯,但它經(jīng)常被違背唇礁,因此需要重復(fù)掉奄。當(dāng)API的設(shè)計者聲明一個拋出異常的方法時,他們試圖告訴你一些事情矾飞,不要忽略它!用一個catch塊為空的try語句包圍方法調(diào)用呀邢,很容易忽略異常:

// Empty catch block ignores exception - Highly suspect!
try { ...
} catch (SomeException e) { 
}

??空catch塊無法實現(xiàn)異常的目的洒沦,即強迫您處理異常條件。忽略異常類似于忽略火警警報价淌,并將其關(guān)閉申眼,這樣其他人就沒有機會看到是否真的發(fā)生了火災(zāi)。你可能會僥幸逃脫蝉衣,或者結(jié)果可能是災(zāi)難性的括尸。每當(dāng)你看到一個空的捕捉塊,警鐘應(yīng)該在你的頭腦中響起病毡。
??在某些情況下濒翻,忽略異常是合適的。例如啦膜,在關(guān)閉 FileInputStream 時有送,它可能是合適的。您沒有更改文件的狀態(tài)僧家,因此不需要執(zhí)行任何恢復(fù)操作雀摘,并且您已經(jīng)從文件中讀取了所需的信息,因此沒有理由中止正在進行的操作八拱。記錄異痴笤可能是明智的烁落,這樣您就可以在這些異常經(jīng)常發(fā)生時調(diào)查問題。如果你選擇忽略異常豌注,catch 塊應(yīng)該包含一個解釋為什么這樣做是合適的注釋,變量應(yīng)該命名為 ignore:

Future<Integer> f = exec.submit(planarMap::chromaticNumber); 
int numColors = 4; // Default; guaranteed sufficient for any map 
try {
  numColors = f.get(1L, TimeUnit.SECONDS);
} catch (TimeoutException | ExecutionException ignored) {
  // Use default: minimal coloring is desirable, not required
}

??本項目中的建議同樣適用于已檢查的異常和未檢查的異常灯萍。無論異常是表示可預(yù)測的異常情況還是編程錯誤轧铁,使用空catch塊忽略它都會導(dǎo)致程序在出現(xiàn)錯誤時靜默地繼續(xù)運行。程序可能會在將來的任意時間失敗旦棉,在代碼中與問題的根源沒有明顯關(guān)系的一點上齿风。正確處理異常可以完全避免失敗绑洛。僅僅讓異常向外傳播至少會導(dǎo)致程序快速失敗救斑,從而保留信息來幫助調(diào)試失敗。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末真屯,一起剝皮案震驚了整個濱河市脸候,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绑蔫,老刑警劉巖运沦,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異配深,居然都是意外死亡携添,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門篓叶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烈掠,“玉大人,你說我怎么就攤上這事缸托∽蟮校” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵嗦董,是天一觀的道長母谎。 經(jīng)常有香客問我,道長京革,這世上最難降的妖魔是什么奇唤? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮匹摇,結(jié)果婚禮上咬扇,老公的妹妹穿的比我還像新娘。我一直安慰自己廊勃,他們只是感情好懈贺,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布经窖。 她就那樣靜靜地躺著,像睡著了一般梭灿。 火紅的嫁衣襯著肌膚如雪画侣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天堡妒,我揣著相機與錄音配乱,去河邊找鬼。 笑死皮迟,一個胖子當(dāng)著我的面吹牛搬泥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伏尼,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼马靠,長吁一口氣:“原來是場噩夢啊……” “哼娩怎!你這毒婦竟也來了本缠?” 一聲冷哼從身側(cè)響起溶褪,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扰她,沒想到半個月后兽掰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡徒役,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年孽尽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忧勿。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡杉女,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸳吸,到底是詐尸還是另有隱情熏挎,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布晌砾,位于F島的核電站坎拐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏养匈。R本人自食惡果不足惜哼勇,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呕乎。 院中可真熱鬧积担,春花似錦、人聲如沸猬仁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至的烁,卻和暖如春褐耳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渴庆。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工漱病, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人把曼。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像漓穿,于是被迫代替她去往敵國和親嗤军。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359