揭示未處理異常的來源
當程式執行過程中出現異常時,追蹤其根源對於故障排除至關重要。如果異常訊息中沒有嵌入明確的程式碼行訊息,未處理的外部異常可能會讓開發人員一無所知。
深入研究自訂異常和巨集
為了應對這一挑戰,一個強大的解決方案涉及創建自訂異常類別並利用巨集。
my_exception 類別擴展了std::runtime_error 類別並包含一個附加的 msg 成員來儲存異常訊息。此類的建構函式透過連接來源檔案、行號和原始異常參數來建構訊息。
接下來, throw_line 巨集簡化了使用行資訊引發異常的過程。它接受一個表示異常訊息的參數,並自動將檔案和行號詳細資料新增至 my_exception 物件中。
將其付諸行動
考慮以下程式碼片段:
void f() { throw_line("Oh no!"); } int main() { try { f(); } catch (const std::runtime_error &ex) { std::cout << ex.what() << std::endl; } }
當f 函數內拋出異常時,巨集 throw_line 提供巨集訊息(“Oh不!”)以及它發生的行號。這些資訊可以透過 my_exception 物件的 What() 方法存取。
透過利用這種方法,開發人員獲得了一個寶貴的工具來精確識別異常的來源,即使它們源自未處理的或外部來源。
以上是如何找出未處理的異常:深入研究自訂異常和宏的詳細內容。更多資訊請關注PHP中文網其他相關文章!