何時透過值或引用捕捉異常:最佳實踐指南
在C 中,有兩種常見的處理異常的方法:按值捕獲和按引用捕獲。問題是在不同的場景下哪一種方法較可取。
根據 C 中異常的標準實踐,正確的方法是按值拋出並按引用捕獲。讓我們探討一下這個建議背後的原因:
按值拋出:
透過引用擷取:
按值捕獲在繼承層次結構中存在問題:
假設您有一個異常類CustomException 和一個重寫某些屬性或方法的派生類MyException。當您按值捕獲異常時,如下例所示:
try { ... } catch (CustomException e) { ... }
如果拋出MyException 對象,捕獲後它將轉換為CustomException 實例,可能會導致派生屬性丟失
範例:
如果MyException 重寫了error_code 成員,則在拋出MyException 物件時,按值擷取將導致錯誤代碼發生意外變更。
總結:
對於大多數場景,建議的做法是按值拋出異常並透過引用捕獲異常,以避免繼承層次結構的潛在問題。這確保了異常資料的完整性,並允許直接存取 catch 區塊中的異常物件。
以上是按值或引用擷取:何時應在 C 中選擇哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!