【第47條】不要忽略異常
作為本章的最後一條,此條目是一條“紀律”,一條你必須遵守的紀律。雖然這是顯而易見的道理,但卻很容易被違反。
任何一個被丟擲的異常都是API設計者有意為之的,其中蘊含了特定的含義,所以千萬不能忽略它們!
try{
......
}catch (Exception e){
}
這樣的程式碼並不十分罕見,這有可能是在程式碼堆砌階段的“簡單寫法”,也可能是程式設計師“偷懶”的寫法,當然也有可能是連“何為Exception”都不得而知的“高人”的作品。
這裡犯了兩個錯誤。首先,就是本條要強調的,它忽略了捕獲來的異常。相當於是把異常抓來,然後“殺”掉它,也就是“裝沒看見”。
另一個錯誤是,不該使用異常的超類Exception,而應該“具體異常,具體分析”。
當然,有些場合還是需要“忽略掉”異常的,但至少要在catch塊中寫明註釋,這裡為什麼要忽略掉某種異常。而且這種情況的出現率絕不能太高。
相關推薦
【第47條】不要忽略異常
作為本章的最後一條,此條目是一條“紀律”,一條你必須遵守的紀律。雖然這是顯而易見的道理,但卻很容易被違反。 任何一個被丟擲的異常都是API設計者有意為之的,其中蘊含了特定的含義,所以千萬不能忽略它們! try{ ...... }catch (Exc
【第8條】改寫equals時總是要改寫hashCode
一個很常見的錯誤根源在於沒有改寫hashCode方法。在每一個改寫了equals的方法的類中,你必須也要改寫hashCode方法。如果不這麼做的話,就會違反Object.hashCode的通用約定,從而導致該類無法與所有基於雜湊值(hash)的集合類結合在一起正常執行,這樣的
【第46條】努力使失敗保持原子性
所謂失敗的原子性,就是在一個方法失敗之後,使物件保持“它在被呼叫之前的狀態”。因為,尤其是CheckedException發生後,一般是希望程式可以從異常中恢復過來的。 那麼如何才能保持物件的狀態呢?最簡單的方法就是使用非可變型別的物件(見【第13條】)。因為無
【第10條】謹慎地改寫clone
原作者在這一條上用了8頁的篇幅,翻譯版也有7頁,足以說明這一條的重要性。我個人對此條的標註是重量級的5顆星! 克隆——是一個很讓人“感興趣”而又“頗有爭議”的話題,無論是在生物界還是在程式碼的世界中。 Java通過實現Cloneable介面來“說明
第六十五條 不要忽略異常
不要忽略異常,這條建議看上去很容易,但我們程式碼中卻常常能看到反例。當api的設計中宣告某些方法中會丟擲某個異常時,它們往往在說明一些情況,某些場景下可能會發生異常,所以,我們不應該忽略它。忽略異常的方法很簡單,只要用個 try...catch 把它包裹起來就行了,並且 catch 裡面什麼都不寫。
Python學習【第15篇】:面向對象之異常處理
解決 tex over self. 代碼 pytho ice dig ans python------------------異常處理 一、錯誤與異常 程序中難免會出現錯誤,而錯誤分為兩種 1.語法錯誤:(這種錯誤,根本過不了python解釋器的語法
Python學習【第15篇】:面向物件之異常處理 python------------------異常處理
python------------------異常處理 一、錯誤與異常 程式中難免會出現錯誤,而錯誤分為兩種 1.語法錯誤:(這種錯誤,根本過不了pyt
進擊的Python【第九章】:paramiko模塊、線程與進程、各種線程鎖、queue隊列、生產者消費者模型
password locking form maxsize 廁所 sorted [0 hostname nbsp 一、paramiko模塊 他是什麽東西? paramiko模塊是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連
20170522-20170527【第三周】
ans 變量 bsp 混入 width 引用 mar 創建 第三周 less框架的應用 創建後綴為.less的文件 [email protected]/* */ [email protected]/* */:100px; 定義時用: .box{ wi
Python開發【第六篇】:Python基礎條件和循環
ora back strong als 重復執行 操作 enume 條件表達式 服務 目錄 一、if語句 1、功能 2、語法 單分支,單重條件判斷 多分支,多重條件判斷 if + else 多分支if + elif + else 語句小結 + 案例 三元表達式 二、whil
Python開發【第五篇】:Python基礎之2
對齊方式 dex 字符串 後退 ring lag nic 有效 func 字符串格式化 Python的字符串格式化有兩種方式: 百分號方式、format方式 百分號的方式相對來說比較老,而format方式則是比較先進的方式,企圖替換古老的方式,目前兩者並存。[PEP-310
Python開發【第四篇】:Python基礎之函數
nco pos *args 更強 三元 sequence hunk ins att 三元運算 三元運算(三目運算),是對簡單的條件語句的縮寫。 # 書寫格式 result = 值1 if 條件 else 值2 # 如果條件成立,那麽將 “值1” 賦值給result
Python之路【第五篇】:面向對象及相關
訪問 遊戲 font raise 內置 無法 sys 接下來 print 面向對象基礎 基礎內容介紹詳見一下兩篇博文: 面向對象初級篇 面向對象進階篇 其他相關 一、isinstance(obj, cls) 檢查是否obj是否是類 cls 的對象 class F
【第四組】典型場景:查看導入的圖片,工作序號:001,2017/7/6
想要 新的 掃描 app 場景 照片 工作 背景 一個地方 場景 工作項序號001:查看導入的圖片,最後修改時間:2017/7/6 1. 背景 1) 典型用戶:羅小歐[主要]、朱小葉[主要] 2) 用戶的需求/迫切需要解決的問題 a. 羅小歐:出去玩拍了好多照片,想要在一個
第三次沖刺會議總結【第四組】
transform menu 顯示 c# 大小 urg 文件 tran 手動 第三次沖刺會議 2017 7 13 邱亞威:做了:vs2017環境配置的徹底完成,3D街景標簽插入代碼的編寫 困難:c#之前沒好好學,所以需要邊學邊編程 規劃:標簽插入功能的完成 諸子軒:做了
python學習【第三篇】基本數據類型
ini ati 絕對值 ef6 ict trunc any 替換 不包含 Number(數字) int(整型) 在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647 在64位系統上,整數的位數為6
【第四組】第十次沖刺會議總結
http 分享 ima 會議 mit 進度 做了 分類 轉換 梁:做了:完善界面ui設計 問題:暫時沒問題 規劃:寫技術報告 邱:做了:鏡頭轉換文檔API的學習 問題:鏡頭轉換太突然 規劃:協助張裕浩完成得到路徑功能 諸:做了:首頁按
【第四組】第十一次沖刺會議報告
log nbsp 使用 images -1 有一個 美化 .com 一次 邱:做了:鏡頭轉換分析 問題:鏡頭轉換還是太突然 規劃:努力完善鏡頭轉換武:做了:好幾種大小顏色的LOGO供使用 問題:沒有,我是優秀的美工 規劃:做做其他設計
【第四組】第十二次沖刺會議報告
commit 執行 完成 技術文檔 整體 alt 點擊 轉換 導入 張:做了:美化初始化界面,解決文件沖突 困難:嵌入js的時候傳的是string[],但是只執行string[0] 規劃:多個點的連接(動態添加point),點擊標簽跳轉,導入圖片,顯示界面 孔:做了:細
【第四組】第十五次沖刺會議報告
技術分享 細節 新的 ui設計 進度 無法 激勵 整合 做出 張:做了:和3D圖片界面銜接,細節優化,3D街景播放暫停,添加音樂 問題:不會控制線程 規劃:街景重復顯示,街景沒有反饋,街景路徑優化,一個點顯示BUG 孔:做了:完善界面 UI設計