# 第七章 錯誤處理 ###### tags: `Tag(Clean Code)` [TOC] ## 大綱 撰寫錯誤處理的原因是,如果程式發生異常時,仍需要讓程式碼做它該做的事情。 但是,散亂的錯誤處理程式碼,反而會導致我們不意理解程式碼真正的意圖,會模糊了程式碼原本的邏輯,書中會提出技巧和考慮的地方。 --- ### 使用例外事件而非回傳錯誤碼 寫程式一定會碰到需要例外處理的情況,有時候我們會選擇定義不同的訊息 FLAG 處理例外,但是一旦 FLAG 越來越多,而且不斷得使用巢狀 if-else 的方式抓取錯誤,程式碼看起來就越來越雜亂。 --- ### 在開頭時就寫下 try-except-finally 的敘述 如果你的程式可能會拋出例外,該是開發者預先知道的,都須養成讓try-catch-finally成為開頭敘述的好習慣 --- #### 1. 使用不檢查型例外 [關於 Exception 與 Error 的基本概念](https://https://medium.com/@clu1022/java%E7%AD%86%E8%A8%98-exception-%E8%88%87-error-dbdf9a9b0909) --- ### 提供發生例外的相關知訊 & 從呼叫者的角度定義例外類別 產生有益的錯誤訊息,隨著例外訊息一起傳遞。 包含: 哪個操作發生錯誤、錯誤型態  當InvalidPacketException的實例被產生的時候(90、101、103行),並不是直接丟出一個空的InvalidPacketException,而是會將「Read data length error」、「Data underflow」、「Read data body error」以及原始的錯誤物件等例外發生相關資訊一併回傳 --- ### 定義正常的程式流程 不要用例外來處理一般商業邏輯。 ### 不要傳遞 null (空值) NullPointerException 機率降到最低 回傳 null 時,是在給自己增加額外的工作量,也是在給呼叫者找麻煩,只要有一處忘記檢查 null ,就會導致NullPointerException
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up