C++核心準(zhǔn)則E.31:正確排列catch子句

月季花
E.31: Properly order your?catch-clauses
E.31:正確排列catch子句
Reason(原因)
catch-clauses are evaluated in the order they appear and one clause can hide another.
catch子句按照它們表示的次序行,一個子句出發(fā)之后,其他子句不再執(zhí)行。
Example(示例)
void f()
{
// ...
try {
// ...
}
catch (Base& b) { /* ... */ }
catch (Derived& d) { /* ... */ }
catch (...) { /* ... */ }
catch (std::exception& e) { /* ... */ }
}
If?Derivedis derived from?Base?the?Derived-handler will never be invoked. The "catch everything" handler ensured that the std::exception-handler will never be invoked.
如果Deriveds是Base的派生類,捕捉派生類的處理永遠(yuǎn)不會執(zhí)行。捕捉所有異常的處理會導(dǎo)致捕捉std::exception的處理程序永遠(yuǎn)不會執(zhí)行。
Enforcement(實施建議)
Flag all "hiding handlers".
標(biāo)記所有被隱藏的異常處理程序。
原文鏈接
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#e31-properly-order-your-catch-clauses
新書介紹
以下是本人3月份出版的新書,拜托多多關(guān)注!

本書利用Python 的標(biāo)準(zhǔn)GUI 工具包tkinter,通過可執(zhí)行的示例對23 個設(shè)計模式逐個進(jìn)行說明。這樣一方面可以使讀者了解真實的軟件開發(fā)工作中每個設(shè)計模式的運用場景和想要解決的問題;另一方面通過對這些問題的解決過程進(jìn)行說明,讓讀者明白在編寫代碼時如何判斷使用設(shè)計模式的利弊,并合理運用設(shè)計模式。
對設(shè)計模式感興趣而且希望隨學(xué)隨用的讀者通過本書可以快速跨越從理解到運用的門檻;希望學(xué)習(xí)Python GUI 編程的讀者可以將本書中的示例作為設(shè)計和開發(fā)的參考;使用Python 語言進(jìn)行圖像分析、數(shù)據(jù)處理工作的讀者可以直接以本書中的示例為基礎(chǔ),迅速構(gòu)建自己的系統(tǒng)架構(gòu)。
覺得本文有幫助?請分享給更多人。
關(guān)注微信公眾號【面向?qū)ο笏伎肌枯p松學(xué)習(xí)每一天!
面向?qū)ο箝_發(fā),面向?qū)ο笏伎迹?/span>
