簡體   English   中英

在頭文件中包含異常類

[英]Including an exception class in a header file

我有一對定義類的文件,例如Foo.cppFoo.hpp ,例如Foo Foo的方法必須拋出一個異常,在文件中定義的潛在MyException.hpp ,但Foo.hpp 不需要 MyException

顯然.cpp需要包含異常標頭,但是我應該在Foo.hpp包含異常標頭,以允許任何使用Foo文件定義異常嗎?

通常的經驗法則是,每個文件都應包含所需的標題。 因此,不,除非在那里需要,否則不要將MyException.hpp添加到Foo.hpp 處理您的異常類的代碼應#include "MyException.hpp" 因此,顯然,無論哪個文件實現引發此異常的成員函數都需要include "MyException.hpp" ,並且任何包含捕獲此異常的代碼的文件也都需要它。

我假設您從std :: exception派生自定義異常。

現在有兩個用例(我想):

  • 唯一的例外是提供信息,無法采取任何措施來解決它。 因此,沒有人會關心實際的類型(您可以將其保留為源)。
  • 異常是特定的,可以采取措施解決該異常:在標頭中將異常類型設為公開。

我見過的大多數異常都是有益的,沒有什么可以解決受影響對象的狀態的。

使每個.h文件自給自足是一種好樣式,因此每個標頭都將包括/提供其所需的所有功能。 鑒於此,在Foo.hpp包含MyException.hppFoo.hpp 這樣, Foo.h用戶Foo.h將其包含在代碼中就不會承受編譯時錯誤。

在Foo.hpp文件中僅包括MyException.hpp標頭。 讓您的Foo.cpp僅包含Foo.hpp標頭。 .cpp文件僅用於實現頭文件中聲明的接口。 .cpp不應包含其自己的標頭中的任何其他包含部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM