[英]Best practices for defining your own exception classes?
我有一些特殊的異常情況,我想拋出並捕獲,所以我想定義自己的異常類。
有什么最好的做法? 我應該繼承std::exception
還是std::runtime_error
?
我不是C ++開發人員,但我們在C#代碼中做的一件事是為我們的框架創建一個基類異常,然后記錄構造函數中拋出的異常:
public FrameworkException(string message, Exception innerException)
: base(message, innerException)
{
log.Error(message, innerException);
}
...
任何派生異常只需調用它的基本構造函數,我們就可以獲得一致的異常日志記錄。 沒什么大不了的,但很有用。
在某些范圍內放置異常時,這是一件好事。 例如,類操作可以在異常類Error中聲明。
並抓住他們
catch ( const Manipulation::InputError& error )
catch ( const Manipulation::CalculationError& error )
在這種情況下,它們可以只是空類而沒有任何其他錯誤信息,除非您設計允許這些異常在您捕獲所有標准異常時飛得更高。
在我看來,如果你繼承std :: exception並不重要。 對我來說,定義異常最重要的是:
它沒有太大的區別,因為std::runtime_error
也繼承自std::exception
。 您可能會爭辯說運行時錯誤會傳達有關異常的更多信息,但實際上,人們通常只是從基類異常類派生而來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.