中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

小城鎮(zhèn)建設(shè)的網(wǎng)站谷歌瀏覽器 官網(wǎng)下載

小城鎮(zhèn)建設(shè)的網(wǎng)站,谷歌瀏覽器 官網(wǎng)下載,將網(wǎng)頁(yè)加入可信站點(diǎn),設(shè)計(jì)師培訓(xùn) 網(wǎng)站異常異常是面向?qū)ο笳Z(yǔ)言處理錯(cuò)誤的一種方式。當(dāng)一個(gè)函數(shù)出現(xiàn)自己無(wú)法處理的錯(cuò)誤時(shí),可以拋出異常,然后輸?shù)闹苯踊蛘唛g接調(diào)用者處理這個(gè)錯(cuò)誤。語(yǔ)法捕獲全部的異常try {//可能拋出異常的代碼//throw異常對(duì)象 } catch(...) {//不管什么異常,都在這…

異常

異常是面向?qū)ο笳Z(yǔ)言處理錯(cuò)誤的一種方式。當(dāng)一個(gè)函數(shù)出現(xiàn)自己無(wú)法處理的錯(cuò)誤時(shí),可以拋出異常,然后輸?shù)闹苯踊蛘唛g接調(diào)用者處理這個(gè)錯(cuò)誤。

語(yǔ)法

捕獲全部的異常

try
{//可能拋出異常的代碼//throw異常對(duì)象
}
catch(...)
{//不管什么異常,都在這里統(tǒng)一處理
}

捕獲指定的異常

try
{// 可能拋出異常的代碼。// throw 異常對(duì)象;
}
catch (exception1 e)
{// 發(fā)生exception1異常時(shí)的處理代碼。
}
catch (exception2 e)
{// 發(fā)生exception2異常時(shí)的處理代碼。
}

在try語(yǔ)句塊中,如果沒(méi)有發(fā)生異常,執(zhí)行完try語(yǔ)句塊中的代碼后,將繼續(xù)執(zhí)行try語(yǔ)句塊之后的代碼;如果發(fā)生了異常,用throw拋出異常對(duì)象異常對(duì)象的類型決定了應(yīng)該匹配到哪個(gè)catch語(yǔ)句塊如果沒(méi)有匹配到catch語(yǔ)句塊,程序?qū)⒄{(diào)用abort()函數(shù)中止。

如果try語(yǔ)句塊中用throw拋出異常對(duì)象,并且匹配到了catch語(yǔ)句塊,執(zhí)行完catch語(yǔ)句塊中的代碼后,將繼續(xù)執(zhí)行catch語(yǔ)句塊之后的代碼,不會(huì)回到try語(yǔ)句塊中。

如果程序中的異常沒(méi)有被捕獲,程序?qū)惓V兄埂?/p>

catch是通過(guò)throw拋出的對(duì)象匹配的;
catch(...)可以捕獲任意類似的對(duì)象,主要捕獲自己都不知道的異常;

下面看幾個(gè)例子

  1. try語(yǔ)句塊中代碼出現(xiàn)異常

#include<iostream>
#include<exception>
#include<array>
using namespace std;
void test()
{array<int, 5> a = { 1,2,3,4,5 };//try//{//    int a1 = a[5];//    cout << a1 << endl;//}//catch(exception e)//{//    cout << "1越界了" << endl;//}try{int a2 = a.at(5);cout << a2 << endl;}catch (exception e){cout << "2越界了" << endl;}
}
int main()
{test();return 0;
}

這里由于第一個(gè)數(shù)組越界程序直接崩潰,注釋掉,運(yùn)行,結(jié)果如下

因?yàn)閍t會(huì)檢查是否越界,當(dāng)訪問(wèn)越界時(shí)會(huì)拋出異常,從而catch發(fā)揮作用。

  1. try語(yǔ)句中拋出異常

#include<iostream>
#include<exception>
#include<array>
using namespace std;
void test1()
{try{throw"未知錯(cuò)誤";cout << "語(yǔ)句1" << endl;}catch (const char* e){cout << e << endl;}
}
int main()
{test1();return 0;
}

我們發(fā)現(xiàn)try語(yǔ)句塊中throw后面的語(yǔ)句沒(méi)有執(zhí)行,我們繼續(xù)觀察

  1. try語(yǔ)句中的函數(shù)拋出異常

#include<iostream>
#include<exception>
#include<array>
using namespace std;
void func()
{throw"未知錯(cuò)誤!";cout << "func()中" << endl;
}
void test2()
{try{func();cout << "try中" << endl;}catch (const char* e){cout << e << endl;}
}
int main()
{test2();return 0;
}

這里我們發(fā)現(xiàn)try語(yǔ)句中拋出異常函數(shù)后面的語(yǔ)句和函數(shù)體拋出語(yǔ)句后面的語(yǔ)句沒(méi)有執(zhí)行。

這是為什么呢??

在函數(shù)調(diào)用鏈中異常展開匹配原則

1. 首先檢查 throw 本身是否在 try 塊內(nèi)部,如果是再查找匹配的 catch 語(yǔ)句,如果有匹配的,則調(diào)到catch的地方進(jìn)行處理;
2. 沒(méi)有匹配的catch則退出當(dāng)前函數(shù)棧,繼續(xù)在調(diào)用函數(shù)的棧中進(jìn)行查找匹配的catch;
3. 如果到達(dá)main函數(shù)的棧,依舊沒(méi)有匹配的,則終止程序。上述這個(gè)沿著調(diào)用鏈查找匹配的catch子句的 過(guò)程稱為棧展開,也稱棧解旋。所以實(shí)際中我們最后都要加一個(gè)catch(…)捕獲任意類型的異常,否則當(dāng)有異常沒(méi)捕獲,程序就會(huì)直接終止。
4. 找到匹配的catch子句并處理以后,會(huì)繼續(xù)沿著catch子句后面繼續(xù)執(zhí)行。
#include<iostream>
#include<exception>
using namespace std;
void func1()
{throw"多級(jí)函數(shù)調(diào)用的未知錯(cuò)誤";
}
void func2()
{func1();
}
void func3()
{func2();
}
void test3()
{try{func3();cout << "try中" << endl;}catch (...){cout << "未知錯(cuò)誤" << endl;}
}
int main()
{test3();return 0;
}

總結(jié):沒(méi)有找到匹配的函數(shù)棧就會(huì)被釋放。

把上述代碼進(jìn)行修改如下

#include<iostream>
#include<exception>
using namespace std;
void func1()
{throw"多級(jí)函數(shù)調(diào)用的未知錯(cuò)誤";}
void func2()
{try{func1();}catch(const char* e){cout << e << endl;}}
void func3()
{func2();
}
void test3()
{try{func3();cout << "try中" << endl;}catch (...){cout << "未知錯(cuò)誤" << endl;}
}
int main()
{test3();return 0;
}

多級(jí)catch

下面給出例子

#include<iostream>
using namespace std;
int main()
{cout << "1-錯(cuò)誤A,2-錯(cuò)誤B,other-未知錯(cuò)誤" << endl;cout << "請(qǐng)輸入:";int x = 0;while (cin >> x){try{if (x == 1)throw"錯(cuò)誤A";else if (x == 2)throw"錯(cuò)誤B";elsethrow"未知錯(cuò)誤";}catch(const char* e){cout << e << endl;}cout << "請(qǐng)輸入:";}return 0;
}
http://www.risenshineclean.com/news/35979.html

相關(guān)文章:

  • 做網(wǎng)站有前途云南seo網(wǎng)絡(luò)優(yōu)化師
  • 學(xué)生做的網(wǎng)站需要備案seo課程多少錢
  • 建設(shè)網(wǎng)站經(jīng)營(yíng)范圍怎么在百度上添加自己的店鋪地址
  • 網(wǎng)站制作 信科網(wǎng)絡(luò)第三方推廣平臺(tái)
  • 打字建站寶愛(ài)站官網(wǎng)
  • wordpress阿里百秀全達(dá)seo
  • i深建官方網(wǎng)站怎么做免費(fèi)的網(wǎng)站推廣
  • 織夢(mèng) 網(wǎng)站欄目管理 很慢小紅書軟文案例
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)站建設(shè)的基本流程關(guān)鍵詞工具有哪些
  • 怎樣在網(wǎng)站上做鏈接站長(zhǎng)字體
  • 上海app網(wǎng)站開發(fā)價(jià)值信息發(fā)布平臺(tái)推廣有哪些
  • 浙江網(wǎng)站建設(shè)報(bào)價(jià)seo指的是搜索引擎
  • 湖北中牛建設(shè)有限公司網(wǎng)站網(wǎng)站搜索
  • 哪個(gè)網(wǎng)站有ae免費(fèi)模板競(jìng)價(jià)托管咨詢微競(jìng)價(jià)
  • 現(xiàn)在幫人做網(wǎng)站賺錢嗎bt種子bt天堂
  • 建設(shè)政府信息網(wǎng)站如何注冊(cè)網(wǎng)站平臺(tái)
  • 做航空產(chǎn)品的網(wǎng)站有哪些搜索量用什么工具查詢
  • 如何將網(wǎng)站指向404太原百度網(wǎng)站快速優(yōu)化
  • 煙臺(tái)網(wǎng)站建設(shè)哪家好呢網(wǎng)絡(luò)顧問(wèn)
  • 手機(jī)網(wǎng)站js特效個(gè)人博客登錄入口
  • 廣州建站模板搭建西安百度競(jìng)價(jià)開戶
  • 作風(fēng)建設(shè)網(wǎng)站海曙seo關(guān)鍵詞優(yōu)化方案
  • 東莞微網(wǎng)站建設(shè)費(fèi)用深圳seo優(yōu)化公司排名
  • 成都市建設(shè)局官網(wǎng)seo優(yōu)化方式包括
  • 邯鄲網(wǎng)站建設(shè)安聯(lián)網(wǎng)絡(luò)nb抖音推廣引流平臺(tái)
  • 網(wǎng)站開發(fā) 招標(biāo)采購(gòu)參數(shù)愛(ài)站網(wǎng)關(guān)鍵詞
  • 網(wǎng)站怎樣做優(yōu)化調(diào)整百度公司招聘崗位
  • 國(guó)內(nèi)建網(wǎng)站知名企業(yè)網(wǎng)站制作廠家有哪些
  • 網(wǎng)站開發(fā)運(yùn)用到的相關(guān)技術(shù)百度競(jìng)價(jià)推廣方案的制定
  • 網(wǎng)站制作公司上海微信引流推廣