首先明確的是異常機制的確是需要系統(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)閉異常機制。
多謝捧場
如果您覺得我的文章有價值,那么賞臉打賞一個,鄙人感激不盡。不過,不打賞看看也是好的,如果有不對的地方,還請您多多指正。