原則15:了解異常處理的系統(tǒng)開銷

首先明確的是異常機制的確是需要系統(tǒng)開銷的。
它的開銷表現(xiàn)在以下幾個方面:
1、跟蹤記錄。你要知道無論是哪里出現(xiàn)了異常,C++都會處理異常,當然這是在你確實寫了try……catch之類的東西的前提下。那么系統(tǒng)為什么會自動采取行動呢?那是因為C++記錄了你程序的行蹤和行為。
2、即使你不使用異常,也要為異常付出代價。因為現(xiàn)在的C++編譯器都支持異常,異常機制已經(jīng)是C++的一部分。當然如果你不使用支持異常機制的編譯器可以避免此開銷。此外,有些編譯器有選項可以讓你開關(guān)異常機制。不過關(guān)閉異常機制可能導(dǎo)致你無法重定義程序庫中生命的虛擬函數(shù)和客戶自定義的回調(diào)函數(shù),雖然我并不太懂它倆與異常之間的關(guān)系,但是還是記下來吧。
3、try塊。只要你使用try就得付出代價,如果確實拋出了異常付出的代價更大。
4、異常規(guī)格聲明與try塊生成的代碼一樣多,所以沒必要不要寫異常聲明。
5、確實拋出了異常,那系統(tǒng)開銷會非常大。
基于以上幾點原因,除非有必要,請關(guān)閉異常機制。

多謝捧場

如果您覺得我的文章有價值,那么賞臉打賞一個,鄙人感激不盡。不過,不打賞看看也是好的,如果有不對的地方,還請您多多指正。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • Java異??刂茩C制又被稱為“違例控制機制”。捕獲程序錯誤最理想的時機是在編譯階段,這樣可以徹底避免錯誤的代碼運行...
    kelgon閱讀 4,595評論 2 50
  • 轉(zhuǎn)載文章,僅用于個人查閱和學習。原文鏈接:http://www.itdecent.cn/p/15872cba211...
    Jayden_Cao閱讀 1,291評論 0 1
  • 在今年,冬季好像額外的寒冷,仿佛天地都被凍住,寒風凜冽;對于住在八樓的我來說,一開門寒風吹拂在臉上,一陣刺痛,毫不...
    薄荷薇薇安閱讀 613評論 11 4

友情鏈接更多精彩內(nèi)容