使用 例外處理 取代 回傳錯誤碼

使用 例外處理 取代 回傳錯誤碼

使用 例外處理 取代 回傳錯誤碼

使用 例外處理 取代 回傳錯誤碼

回傳錯誤碼的函式,會違反指令與查詢分離的原則。

ex:if (deletePage(page) == E_OK)

這樣的用法不會引起動詞/形容詞的困惑,但會導致更深層的巢狀結構。
當回傳一個錯誤碼,就是要求呼叫者必須馬上處理這個錯誤。

if (deletePage(page) == E_OK) {

if () {
if() {

} else {

}
} else {

}
} else {

}

如果使用例外處理取代錯誤碼,錯誤處理的程式碼就能從主要路徑抽離
出來,也相對簡化程式碼。

try {
deletePage(page);
registry.deleteReference(page.name);

} catch () {

}