欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++的異常機(jī)制底層原理與實(shí)際應(yīng)用詳細(xì)說(shuō)明

Wildesbeast ? 來(lái)源:21IC ? 作者:21IC ? 2020-11-22 11:34 ? 次閱讀

我們?cè)趯?duì) vector 做 push 操作的時(shí)候,或者對(duì)某個(gè)指針做 new 操作的時(shí)候,如果沒(méi)有做異常處理,一旦系統(tǒng)內(nèi)存不夠用了,程序是會(huì)被 terminate 掉的。這就要求我們熟悉 C++ 異常,保證日常開(kāi)發(fā)中能正確處理它。本文主要介紹C++ 異常機(jī)制的底層原理與實(shí)際應(yīng)用,通俗易懂,快來(lái)讀一讀吧。

以下是正文

C++異常機(jī)制概述

異常處理是C++的一項(xiàng)語(yǔ)言機(jī)制,用于在程序中處理異常事件。異常事件在 C++ 中表示為 異常對(duì)象 。異常事件發(fā)生時(shí),程序使用throw關(guān)鍵字拋出異常表達(dá)式,拋出點(diǎn)稱為異常出現(xiàn)點(diǎn),由操作系統(tǒng)為程序設(shè)置當(dāng)前異常對(duì)象,然后執(zhí)行程序的當(dāng)前異常處理代碼塊,在包含了異常出現(xiàn)點(diǎn)的最內(nèi)層的 try 塊,依次匹配catch語(yǔ)句中的異常對(duì)象(只進(jìn)行類型匹配,catch參數(shù)有時(shí)在 catch 語(yǔ)句中并不會(huì)使用到)。若匹配成功,則執(zhí)行 catch 塊內(nèi)的異常處理語(yǔ)句,然后接著執(zhí)行 try.。.catch.。. 塊之后的代碼。如果在當(dāng)前的 try.。.catch.。. 塊內(nèi)找不到 匹配 該異常對(duì)象的catch語(yǔ)句,則由更外層的 try.。.catch.。. 塊來(lái)處理該異常;如果當(dāng)前函數(shù)內(nèi)所有的 try.。.catch.。. 塊都不能匹配該異常,則遞歸回退到調(diào)用棧的上一層去處理該異常。如果一直退到主函數(shù) main() 都不能處理該異常,則調(diào)用系統(tǒng)函數(shù) terminate() 終止程序。

一個(gè)最簡(jiǎn)單的 try.。.catch.。. 的例子如下所示。我們有個(gè)程序用來(lái)記班級(jí)學(xué)生考試成績(jī),考試成績(jī)分?jǐn)?shù)的范圍在 0-100 之間,不在此范圍內(nèi)視為數(shù)據(jù)異常:

int main(){ int score=0; while (cin 》》 score) { try { if (score 》 100 || score 《 0) { throw score; } //將分?jǐn)?shù)寫(xiě)入文件或進(jìn)行其他操作 } catch (int score) { cerr 《《 “你輸入的分?jǐn)?shù)數(shù)值有問(wèn)題,請(qǐng)重新輸入!”; continue; } }}

throw 關(guān)鍵字

在上面這個(gè)示例中, throw 是個(gè)關(guān)鍵字,與拋出表達(dá)式構(gòu)成了 throw 語(yǔ)句。 其語(yǔ)法為:

throw 表達(dá)式;

throw 語(yǔ)句必須包含在 try 塊中,也可以是被包含在調(diào)用棧的外層函數(shù)的 try 塊中,如:

//示例代碼:throw包含在外層函數(shù)的try塊中void registerScore(int score){ if (score 》 100 || score 《 0) throw score; //throw語(yǔ)句被包含在外層main的try語(yǔ)句塊中 //將分?jǐn)?shù)寫(xiě)入文件或進(jìn)行其他操作}int main(){ int score=0; while (cin 》》 score) { try { registerScore(score); } catch (int score) { cerr 《《 “你輸入的分?jǐn)?shù)數(shù)值有問(wèn)題,請(qǐng)重新輸入!”; continue; } }}

執(zhí)行 throw 語(yǔ)句時(shí),throw 表達(dá)式將作為對(duì)象被復(fù)制構(gòu)造為一個(gè)新的對(duì)象,稱為異常對(duì)象。 異常對(duì)象放在內(nèi)存的特殊位置,該位置既不是棧也不是堆,在 window 上是放在線程信息塊 TIB 中。 這個(gè)構(gòu)造出來(lái)的新對(duì)象與本級(jí)的 try 所對(duì)應(yīng)的 catch 語(yǔ)句進(jìn)行 類型匹配 ,類型匹配的原則在下面介紹。

在本例中,依據(jù) score 構(gòu)造出來(lái)的對(duì)象類型為 int,與 catch(int score) 匹配上,程序控制權(quán)轉(zhuǎn)交到 catch 的語(yǔ)句塊,進(jìn)行異常處理代碼的執(zhí)行。如果在本函數(shù)內(nèi)與 catch 語(yǔ)句的類型匹配不成功,則在調(diào)用棧的外層函數(shù)繼續(xù)匹配,如此遞歸執(zhí)行直到匹配上 catch 語(yǔ)句,或者直到 main 函數(shù)都沒(méi)匹配上而調(diào)用系統(tǒng)函數(shù) terminate() 終止程序。當(dāng)執(zhí)行一個(gè) throw 語(yǔ)句時(shí),跟在 throw 語(yǔ)句之后的語(yǔ)句將不再被執(zhí)行,throw 語(yǔ)句的語(yǔ)法有點(diǎn)類似于 return,因此導(dǎo)致在調(diào)用棧上的函數(shù)可能提早退出。

異常對(duì)象

異常對(duì)象是一種特殊的對(duì)象,編譯器依據(jù)異常拋出表達(dá)式復(fù)制構(gòu)造異常對(duì)象,這要求拋出異常表達(dá)式不能是一個(gè)不完全類型(一個(gè)類型在聲明之后定義之前為一個(gè)不完全類型。不完全類型意味著該類型沒(méi)有完整的數(shù)據(jù)與操作描述),而且可以進(jìn)行復(fù)制構(gòu)造,這就要求異常拋出表達(dá)式的復(fù)制構(gòu)造函數(shù)(或移動(dòng)構(gòu)造函數(shù))、析構(gòu)函數(shù)不能是私有的。

異常對(duì)象不同于函數(shù)的局部對(duì)象,局部對(duì)象在函數(shù)調(diào)用結(jié)束后就被自動(dòng)銷毀,而異常對(duì)象將駐留在所有可能被激活的 catch 語(yǔ)句都能訪問(wèn)到的內(nèi)存空間中,也即上文所說(shuō)的 TIB。當(dāng)異常對(duì)象與 catch 語(yǔ)句成功匹配上后,在該 catch 語(yǔ)句的結(jié)束處被自動(dòng)析構(gòu)。在函數(shù)中返回局部變量的引用或指針幾乎肯定會(huì)造成錯(cuò)誤,同樣的道理,在 throw 語(yǔ)句中拋出局部變量的指針或引用也幾乎是錯(cuò)誤的行為。如果指針?biāo)赶虻淖兞吭趫?zhí)行 catch 語(yǔ)句時(shí)已經(jīng)被銷毀,對(duì)指針進(jìn)行解引用將發(fā)生意想不到的后果。throw 出一個(gè)表達(dá)式時(shí),該表達(dá)式的靜態(tài)編譯類型將決定異常對(duì)象的類型。所以當(dāng) throw 出的是基類指針的解引用,而該指針?biāo)赶虻膶?shí)際對(duì)象是派生類對(duì)象,此時(shí)將發(fā)生派生類對(duì)象切割。除了拋出用戶自定義的類型外,C++ 標(biāo)準(zhǔn)庫(kù)定義了一組類,用戶報(bào)告標(biāo)準(zhǔn)庫(kù)函數(shù)遇到的問(wèn)題。這些標(biāo)準(zhǔn)庫(kù)異常類只定義了幾種運(yùn)算,包括創(chuàng)建或拷貝異常類型對(duì)象,以及為異常類型的對(duì)象賦值。標(biāo)準(zhǔn)異常類描述頭文件

exception最通用的異常類,只報(bào)告異常的發(fā)生而不提供任何額外的信息exception

runtime_error只有在運(yùn)行時(shí)才能檢測(cè)出的錯(cuò)誤stdexcept

rang_error運(yùn)行時(shí)錯(cuò)誤:產(chǎn)生了超出有意義值域范圍的結(jié)果stdexcept

overflow_error運(yùn)行時(shí)錯(cuò)誤:計(jì)算上溢stdexcept

underflow_error運(yùn)行時(shí)錯(cuò)誤:計(jì)算下溢stdexcept

logic_error程序邏輯錯(cuò)誤stdexcept

domain_error邏輯錯(cuò)誤:參數(shù)對(duì)應(yīng)的結(jié)果值不存在stdexcept

invalid_argument邏輯錯(cuò)誤:無(wú)效參數(shù)stdexcept

length_error邏輯錯(cuò)誤:試圖創(chuàng)建一個(gè)超出該類型最大長(zhǎng)度的對(duì)象stdexcept

out_of_range邏輯錯(cuò)誤:使用一個(gè)超出有效范圍的值stdexcept

bad_alloc內(nèi)存動(dòng)態(tài)分配錯(cuò)誤new

bad_castdynamic_cast類型轉(zhuǎn)換出錯(cuò)type_info

catch 關(guān)鍵字

catch語(yǔ)句匹配被拋出的異常對(duì)象。如果 catch 語(yǔ)句的參數(shù)是引用類型,則該參數(shù)可直接作用于異常對(duì)象,即參數(shù)的改變也會(huì)改變異常對(duì)象,而且在 catch 中重新拋出異常時(shí)會(huì)繼續(xù)傳遞這種改變。如果 catch 參數(shù)是傳值的,則復(fù)制構(gòu)函數(shù)將依據(jù)異常對(duì)象來(lái)構(gòu)造catch 參數(shù)對(duì)象。在該 catch 語(yǔ)句結(jié)束的時(shí)候,先析構(gòu) catch 參數(shù)對(duì)象,然后再析構(gòu)異常對(duì)象。

在進(jìn)行異常對(duì)象的匹配時(shí),編譯器不會(huì)做任何的隱式類型轉(zhuǎn)換或類型提升。除了以下幾種情況外,異常對(duì)象的類型必須與 catch 語(yǔ)句的聲明類型完全匹配:

允許從非常量到常量的類型轉(zhuǎn)換。

允許派生類到基類的類型轉(zhuǎn)換。

數(shù)組被轉(zhuǎn)換成指向數(shù)組(元素)類型的指針。

函數(shù)被轉(zhuǎn)換成指向函數(shù)類型的指針。

尋找 catch 語(yǔ)句的過(guò)程中,匹配上的未必是類型完全匹配那項(xiàng),而在是最靠前的第一個(gè)匹配上的 catch 語(yǔ)句(我稱它為最先匹配原則)。所以,派生類的處理代碼 catch 語(yǔ)句應(yīng)該放在基類的處理 catch 語(yǔ)句之前,否則先匹配上的總是參數(shù)類型為基類的 catch 語(yǔ)句,而能夠精確匹配的 catch 語(yǔ)句卻不能夠被匹配上。在 catch 塊中,如果在當(dāng)前函數(shù)內(nèi)無(wú)法解決異常,可以繼續(xù)向外層拋出異常,讓外層catch 異常處理塊接著處理。此時(shí)可以使用不帶表達(dá)式的 throw 語(yǔ)句將捕獲的異常重新拋出:

catch(type x){ //做了一部分處理 throw;}

被重新拋出的異常對(duì)象為保存在 TIB 中的那個(gè)異常對(duì)象,與 catch 的參數(shù)對(duì)象沒(méi)有關(guān)系,若 catch 參數(shù)對(duì)象是引用類型,可能在 catch 語(yǔ)句內(nèi)已經(jīng)對(duì)異常對(duì)象進(jìn)行了修改,那么重新拋出的是修改后的異常對(duì)象; 若catch參數(shù)對(duì)象是非引用類型,則重新拋出的異常對(duì)象并沒(méi)有受到修改。使用 catch(。..){} 可以捕獲所有類型的異常,根據(jù)最先匹配原則,catch(。..){} 應(yīng)該放在所有 catch 語(yǔ)句的最后面,否則無(wú)法讓其他可以精確匹配的 catch 語(yǔ)句得到匹配。通常在catch(。..){} 語(yǔ)句中執(zhí)行當(dāng)前可以做的處理,然后再重新拋出異常。注意,catch 中重新拋出的異常只能被外層的 catch 語(yǔ)句捕獲。

棧展開(kāi)、RAII

其實(shí)棧展開(kāi)已經(jīng)在前面說(shuō)過(guò),就是從異常拋出點(diǎn)一路向外層函數(shù)尋找匹配的 catch 語(yǔ)句的過(guò)程,尋找結(jié)束于某個(gè)匹配的 catch 語(yǔ)句或標(biāo)準(zhǔn)庫(kù)函數(shù) terminate。這里重點(diǎn)要說(shuō)的是棧展開(kāi)過(guò)程中對(duì)局部變量的銷毀問(wèn)題。我們知道,在函數(shù)調(diào)用結(jié)束時(shí),函數(shù)的局部變量會(huì)被系統(tǒng)自動(dòng)銷毀,類似的,throw 可能會(huì)導(dǎo)致調(diào)用鏈上的語(yǔ)句塊提前退出,此時(shí),語(yǔ)句塊中的局部變量將按照構(gòu)成生成順序的逆序,依次調(diào)用析構(gòu)函數(shù)進(jìn)行對(duì)象的銷毀。例如下面這個(gè)例子:

//一個(gè)沒(méi)有任何意義的類class A{public: A() :a(0){ cout 《《 “A默認(rèn)構(gòu)造函數(shù)” 《《 endl; } A(const A& rsh){ cout 《《 “A復(fù)制構(gòu)造函數(shù)” 《《 endl; } ~A(){ cout 《《 “A析構(gòu)函數(shù)” 《《 endl; }private: int a;};int main(){ try { A a ; throw a; } catch (A a) { ; } return 0;}

程序?qū)⑤敵觯?/p>

定義變量 a 時(shí)調(diào)用了默認(rèn)構(gòu)造函數(shù),使用 a 初始化異常變量時(shí)調(diào)用了復(fù)制構(gòu)造函數(shù),使用異常變量復(fù)制構(gòu)造 catch 參數(shù)對(duì)象時(shí)同樣調(diào)用了復(fù)制構(gòu)造函數(shù)。三個(gè)構(gòu)造對(duì)應(yīng)三個(gè)析構(gòu),也即 try 語(yǔ)句塊中局部變量 a 自動(dòng)被析構(gòu)了。然而,如果 a 是在自由存儲(chǔ)區(qū)上分配的內(nèi)存時(shí):

int main(){ try { A * a= new A; throw *a; } catch (A a) { ; } getchar(); return 0;}

程序運(yùn)行結(jié)果:

同樣的三次構(gòu)造,卻只調(diào)用了兩次的析構(gòu)函數(shù)!說(shuō)明 a 的內(nèi)存在發(fā)生異常時(shí)并沒(méi)有被釋放掉,發(fā)生了內(nèi)存泄漏。

RAII機(jī)制有助于解決這個(gè)問(wèn)題,RAII(Resource acquisition is initialization,資源獲取即初始化)。它的思想是以對(duì)象管理資源。為了更為方便、魯棒地釋放已獲取的資源,避免資源死鎖,一個(gè)辦法是把資源數(shù)據(jù)用對(duì)象封裝起來(lái)。程序發(fā)生異常,執(zhí)行棧展開(kāi)時(shí),封裝了資源的對(duì)象會(huì)被自動(dòng)調(diào)用其析構(gòu)函數(shù)以釋放資源。C++ 中的智能指針便符合RAII。關(guān)于這個(gè)問(wèn)題詳細(xì)可以看《Effective C++》條款13.異常機(jī)制與構(gòu)造函數(shù)

異常機(jī)制的一個(gè)合理的使用是在構(gòu)造函數(shù)中。構(gòu)造函數(shù)沒(méi)有返回值,所以應(yīng)該使用異常機(jī)制來(lái)報(bào)告發(fā)生的問(wèn)題。更重要的是,構(gòu)造函數(shù)拋出異常表明構(gòu)造函數(shù)還沒(méi)有執(zhí)行完,其對(duì)應(yīng)的析構(gòu)函數(shù)不會(huì)自動(dòng)被調(diào)用,因此析構(gòu)函數(shù)應(yīng)該先析構(gòu)所有所有已初始化的基對(duì)象,成員對(duì)象,再拋出異常。

C++ 類構(gòu)造函數(shù)初始化列表的異常機(jī)制,稱為 function-try block。一般形式為:

myClass::myClass(type1 pa1) try: _myClass_val (初始化值){ /*構(gòu)造函數(shù)的函數(shù)體 */} catch ( exception& err ){ /* 構(gòu)造函數(shù)的異常處理部分 */};

異常機(jī)制與析構(gòu)函數(shù)C++ 不禁止析構(gòu)函數(shù)向外界拋出異常,但析構(gòu)函數(shù)被期望不向外界函數(shù)拋出異常。析構(gòu)函數(shù)中向函數(shù)外拋出異常,將直接調(diào)用 terminator() 系統(tǒng)函數(shù)終止程序。如果一個(gè)析構(gòu)函數(shù)內(nèi)部拋出了異常,就應(yīng)該在析構(gòu)函數(shù)的內(nèi)部捕獲并處理該異常,不能讓異常被拋出析構(gòu)函數(shù)之外??梢匀绱颂幚恚?/p>

若析構(gòu)函數(shù)拋出異常,調(diào)用 std::abort() 來(lái)終止程序。

在析構(gòu)函數(shù)中 catch 捕獲異常并作處理。

關(guān)于具體細(xì)節(jié),有興趣可以看《Effective C++》條款08:別讓異常逃離析構(gòu)函數(shù)。

noexcept修飾符與noexcept操作符

noexcept 修飾符是 C++11 新提供的異常說(shuō)明符,用于聲明一個(gè)函數(shù)不會(huì)拋出異常。編譯器能夠針對(duì)不拋出異常的函數(shù)進(jìn)行優(yōu)化,另一個(gè)顯而易見(jiàn)的好處是你明確了某個(gè)函數(shù)不會(huì)拋出異常,別人調(diào)用你的函數(shù)時(shí)就知道不用針對(duì)這個(gè)函數(shù)進(jìn)行異常捕獲。在 C++98中關(guān)于異常處理的程序中你可能會(huì)看到這樣的代碼:

void func() throw(int ,double ) {。..}void func() throw(){。..}

這是 throw 作為函數(shù)異常說(shuō)明,前者表示 func()這個(gè)函數(shù)可能會(huì)拋出 int 或 double 類型的異常,后者表示 func() 函數(shù)不會(huì)拋出異常。事實(shí)上前者很少被使用,在 C++11 這種做法已經(jīng)被摒棄,而后者則被 C++11 的 noexcept 異常聲明所代替:

void func() noexcept {。..}//等價(jià)于void func() throw(){。..}

在 C++11 中,編譯器并不會(huì)在編譯期檢查函數(shù)的 noexcept 聲明,因此,被聲明為noexcept 的函數(shù)若攜帶異常拋出語(yǔ)句還是可以通過(guò)編譯的。 在函數(shù)運(yùn)行時(shí)若拋出了異常,編譯器可以選擇直接調(diào)用 terminate() 函數(shù)來(lái)終結(jié)程序的運(yùn)行,因此,noexcept 的一個(gè)作用是 阻止異常的傳播,提高安全性 。上面一點(diǎn)提到了,我們不能讓異常逃出析構(gòu)函數(shù),因?yàn)槟菍?dǎo)致程序的不明確行為或直接終止程序。實(shí)際上出于安全的考慮,C++11 標(biāo)準(zhǔn)中讓類的析構(gòu)函數(shù)默認(rèn)也是 noexcept 的。同樣是為了安全性的考慮,經(jīng)常被析構(gòu)函數(shù)用于釋放資源的 delete 函數(shù),C++11 也默認(rèn)將其設(shè)置為 noexcept。

noexcept也可以接受一個(gè)常量表達(dá)式作為參數(shù),例如:

void func() noexcept(常量表達(dá)式);

常量表達(dá)式的結(jié)果會(huì)被轉(zhuǎn)換成 bool 類型,noexcept(bool) 表示函數(shù)不會(huì)拋出異常,noexcept(false) 則表示函數(shù)有可能會(huì)拋出異常。 故若你想更改析構(gòu)函數(shù)默認(rèn)的 noexcept聲明,可以顯式地加上 noexcept(false) 聲明,但這并不會(huì)帶給你什么好處。

異常處理的性能分析

異常處理機(jī)制的主要環(huán)節(jié)是運(yùn)行期類型檢查。當(dāng)拋出一個(gè)異常時(shí),必須確定異常是不是從 try 塊中拋出。異常處理機(jī)制為了完善異常和它的處理器之間的匹配,需要存儲(chǔ)每個(gè)異常對(duì)象的類型信息以及 catch 語(yǔ)句的額外信息。由于異常對(duì)象可以是任何類型(如用戶自定義類型),并且也可以是多態(tài)的,獲取其動(dòng)態(tài)類型必須要使用運(yùn)行時(shí)類型檢查(RTTI),此外還需要運(yùn)行期代碼信息和關(guān)于每個(gè)函數(shù)的結(jié)構(gòu)。當(dāng)異常拋出點(diǎn)所在函數(shù)無(wú)法解決異常時(shí),異常對(duì)象沿著調(diào)用鏈被傳遞出去,程序的控制權(quán)也發(fā)生了轉(zhuǎn)移。轉(zhuǎn)移的過(guò)程中為了將異常對(duì)象的信息攜帶到程序執(zhí)行處(如對(duì)異常對(duì)象的復(fù)制構(gòu)造或者 catch 參數(shù)的析構(gòu)),在時(shí)間和空間上都要付出一定的代價(jià),本身也有不安全性,特別是異常對(duì)象是個(gè)復(fù)雜的類的時(shí)候。異常處理技術(shù)在不同平臺(tái)以及編譯器下的實(shí)現(xiàn)方式都不同,但都會(huì)給程序增加額外的負(fù)擔(dān),當(dāng)異常處理被關(guān)閉時(shí),額外的數(shù)據(jù)結(jié)構(gòu)、查找表、一些附加的代碼都不會(huì)被生成,正是因?yàn)槿绱?,?duì)于明確不拋出異常的函數(shù),我們需要使用 noexcept 進(jìn)行聲明。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3060

    瀏覽量

    74353
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62990
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73873
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    求3525電路詳細(xì)說(shuō)明

    求3525電路詳細(xì)說(shuō)明,越詳細(xì)越好,謝謝!
    發(fā)表于 04-18 08:21

    F28335的SCI的詳細(xì)說(shuō)明哪里可以找

    到什么地方怎樣找。比如我需要F28335的SCI的詳細(xì)說(shuō)明,我需要F28335的I2C詳細(xì)說(shuō)明(具體到工作原理的細(xì)節(jié),每一個(gè)寄存器每一個(gè)位的說(shuō)明),不一定要中文的,英文的也可以,請(qǐng)問(wèn)
    發(fā)表于 06-10 15:31

    C++異常機(jī)制探討

    C++異常機(jī)制為我們提供了更好的解決方法。異常處理的基本思想是:當(dāng)出現(xiàn)錯(cuò)誤時(shí)拋出一個(gè)異常,希望它的調(diào)用者能捕獲并處理這個(gè)
    發(fā)表于 11-23 11:04 ?3491次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>異常</b><b class='flag-5'>機(jī)制</b>探討

    C++的cast最完整最詳細(xì)的解釋資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++的cast最完整最詳細(xì)的解釋資料說(shuō)明。
    發(fā)表于 01-29 15:26 ?0次下載
    <b class='flag-5'>C++</b>的cast最完整最<b class='flag-5'>詳細(xì)</b>的解釋資料<b class='flag-5'>說(shuō)明</b>

    C++程序設(shè)計(jì)教程之函數(shù)機(jī)制詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之函數(shù)機(jī)制詳細(xì)資料說(shuō)明主要內(nèi)容包括了: 1.函數(shù)性質(zhì)( Function Character ) ,
    發(fā)表于 02-22 11:24 ?2次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)教程之函數(shù)<b class='flag-5'>機(jī)制</b>的<b class='flag-5'>詳細(xì)</b>資料<b class='flag-5'>說(shuō)明</b>

    C++程序設(shè)計(jì)教程之C++的初步知識(shí)的詳細(xì)資料說(shuō)明

    C++程序設(shè)計(jì)教程之C++的初步知識(shí)的詳細(xì)資料說(shuō)明包括了:1. 從CC++,2 . 最簡(jiǎn)單的
    發(fā)表于 03-14 14:48 ?31次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)教程之<b class='flag-5'>C++</b>的初步知識(shí)的<b class='flag-5'>詳細(xì)</b>資料<b class='flag-5'>說(shuō)明</b>

    C++程序設(shè)計(jì)教程之C++工具的詳細(xì)資料說(shuō)明

    本文檔的詳細(xì)介紹的是C++程序設(shè)計(jì)教程之C++工具的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1. 異常處理,
    發(fā)表于 03-14 16:39 ?4次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)教程之<b class='flag-5'>C++</b>工具的<b class='flag-5'>詳細(xì)</b>資料<b class='flag-5'>說(shuō)明</b>

    I2C總線的規(guī)范詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是I2C總線的規(guī)范詳細(xì)說(shuō)明
    發(fā)表于 09-30 17:29 ?18次下載
    I2<b class='flag-5'>C</b>總線的規(guī)范<b class='flag-5'>詳細(xì)說(shuō)明</b>

    C++語(yǔ)言編碼規(guī)范詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++語(yǔ)言編碼規(guī)范詳細(xì)說(shuō)明
    發(fā)表于 01-07 16:19 ?14次下載
    <b class='flag-5'>C++</b>語(yǔ)言編碼規(guī)范<b class='flag-5'>詳細(xì)說(shuō)明</b>

    C語(yǔ)言程序設(shè)計(jì)的復(fù)習(xí)資料詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)的復(fù)習(xí)資料詳細(xì)說(shuō)明。
    發(fā)表于 03-26 16:46 ?3次下載
    <b class='flag-5'>C</b>語(yǔ)言程序設(shè)計(jì)的復(fù)習(xí)資料<b class='flag-5'>詳細(xì)說(shuō)明</b>

    C語(yǔ)言的拓展歸納總結(jié)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言的拓展歸納總結(jié)詳細(xì)說(shuō)明。
    發(fā)表于 07-29 08:00 ?2次下載
    <b class='flag-5'>C</b>語(yǔ)言的拓展歸納總結(jié)<b class='flag-5'>詳細(xì)說(shuō)明</b>

    5GSA的異常事件如何進(jìn)行優(yōu)化詳細(xì)說(shuō)明

    5GSA的異常事件如何進(jìn)行優(yōu)化詳細(xì)說(shuō)明
    發(fā)表于 12-11 00:48 ?15次下載
    5GSA的<b class='flag-5'>異常</b>事件如何進(jìn)行優(yōu)化<b class='flag-5'>詳細(xì)說(shuō)明</b>

    C語(yǔ)言和C++的特點(diǎn)與用法詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言和C++的特點(diǎn)與用法詳細(xì)說(shuō)明
    的頭像 發(fā)表于 12-26 10:58 ?4481次閱讀

    Visual C++的介紹和數(shù)據(jù)類型詳細(xì)說(shuō)明

    Visual C++的介紹和數(shù)據(jù)類型詳細(xì)說(shuō)明介紹。
    發(fā)表于 03-29 15:32 ?17次下載

    C++程序異常處理機(jī)制是什么

    那么C++設(shè)計(jì)了一套異常處理機(jī)制,一方面能夠使得異常處理和正常運(yùn)行代碼進(jìn)行分離,使得程序更加模塊化;另一方面,C++
    的頭像 發(fā)表于 02-21 10:37 ?922次閱讀
    <b class='flag-5'>C++</b>程序<b class='flag-5'>異常</b>處理<b class='flag-5'>機(jī)制</b>是什么