使用 例外處理 取代 回傳錯誤碼
使用 例外處理 取代 回傳錯誤碼
使用 例外處理 取代 回傳錯誤碼
使用 例外處理 取代 回傳錯誤碼
回傳錯誤碼的函式,會違反指令與查詢分離的原則。
ex:if (deletePage(page) == E_OK)
這樣的用法不會引起動詞/形容詞的困惑,但會導致更深層的巢狀結構。
當回傳一個錯誤碼,就是要求呼叫者必須馬上處理這個錯誤。
if (deletePage(page) == E_OK) {
…
if () {
if() {
…
} else {
…
}
} else {
…
}
} else {
…
}
如果使用例外處理取代錯誤碼,錯誤處理的程式碼就能從主要路徑抽離
出來,也相對簡化程式碼。
try {
deletePage(page);
registry.deleteReference(page.name);
…
} catch () {
…
}