亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C++ > 正文

C++編程異常處理中try和throw以及catch語(yǔ)句的用法

2020-05-23 14:09:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了C++編程異常處理中try和throw以及catch語(yǔ)句的用法,包括對(duì)Catch塊的計(jì)算方式的介紹,需要的朋友可以參考下
 

若要在 C++ 中實(shí)現(xiàn)異常處理,你可以使用 try、throw 和 catch 表達(dá)式。
首先,使用 try 塊將可能引發(fā)異常的一個(gè)或多個(gè)語(yǔ)句封閉起來(lái)。
throw 表達(dá)式發(fā)出信號(hào),異常條件(通常是錯(cuò)誤)已在 try 塊中發(fā)生。你可以使用任何類(lèi)型的對(duì)象作為 throw 表達(dá)式的操作數(shù)。該對(duì)象一般用于傳達(dá)有關(guān)錯(cuò)誤的信息。大多數(shù)情況下,建議你使用 std::exception 類(lèi)或標(biāo)準(zhǔn)庫(kù)中定義的派生類(lèi)之一。如果其中的類(lèi)不合適,建議你從 std::exception 派生自己的異常類(lèi)。
若要處理可能引發(fā)的異常,請(qǐng)?jiān)?try 塊之后立即實(shí)現(xiàn)一個(gè)或多個(gè) catch 塊。每個(gè) catch 塊指定它能處理的異常類(lèi)型。
以下示例將顯示 try 塊及其處理程序。假設(shè) GetNetworkResource() 通過(guò)網(wǎng)絡(luò)連接獲取數(shù)據(jù),并且兩個(gè)異常類(lèi)型是從 std::exception 派生的用戶定義的類(lèi)。請(qǐng)注意,異常由 catch 語(yǔ)句中的 const 引用捕獲。我們建議你通過(guò)值引發(fā)異常并通過(guò)常數(shù)引用將其捕獲。

MyData md;try { // Code that could throw an exception md = GetNetworkResource();}catch (const networkIOException& e) { // Code that executes when an exception of type // networkIOException is thrown in the try block // ... // Log error message in the exception object cerr << e.what();}catch (const myDataFormatException& e) { // Code that handles another exception type // ... cerr << e.what();}// The following syntax shows a throw expressionMyData GetNetworkResource(){ // ... if (IOSuccess == false)  throw networkIOException("Unable to connect"); // ... if (readError)  throw myDataFormatException("Format error");  // ...}

備注
try 子句后的代碼是代碼的受保護(hù)部分。 throw 表達(dá)式將引發(fā)(即引起)異常。 catch 子句后的代碼塊是異常處理程序。如果 throw 和 catch 表達(dá)式中的類(lèi)型兼容,該處理程序?qū)⒉东@引發(fā)的異常。有關(guān)管理 catch 塊中類(lèi)型匹配的規(guī)則的列表,請(qǐng)參閱Catch 塊的計(jì)算方式 (C++)。如果 catch 語(yǔ)句指定省略號(hào) (...) 而非類(lèi)型,catch 塊將處理每種類(lèi)型的異常。當(dāng)你使用 /EHa 選項(xiàng)編譯時(shí),異??砂?C 結(jié)構(gòu)化異常和系統(tǒng)生成或應(yīng)用程序生成的異步異常,例如內(nèi)存保護(hù)、被零除和浮點(diǎn)沖突。由于 catch 塊按編程順序處理以查找匹配類(lèi)型,所以盡量不要使用省略號(hào)處理程序來(lái)處理關(guān)聯(lián)的 try 塊。請(qǐng)謹(jǐn)慎使用 catch(...);除非 catch 塊知道如何處理捕獲的特定異常,否則禁止程序繼續(xù)執(zhí)行。 catch(...) 塊一般用于在程序停止執(zhí)行前記錄錯(cuò)誤和執(zhí)行特殊的清理工作。
沒(méi)有操作數(shù)的 throw 表達(dá)式將重新引發(fā)當(dāng)前正在處理的異常。我們建議在重新引發(fā)異常時(shí)采用該形式,是因?yàn)檫@將保留原始異常的多態(tài)類(lèi)型信息。此類(lèi)表達(dá)式只應(yīng)在 catch 處理程序中或從 catch 處理程序調(diào)用的函數(shù)中使用。重新引發(fā)的異常對(duì)象是原始異常對(duì)象,而不是副本。

try { throw CSomeOtherException();}catch(...) { // Catch all exceptions – dangerous!!! // Respond (perhaps only partially) to the exception, then // re-throw to pass the exception to some other handler // ... throw;}

Catch 塊的計(jì)算方式 (C++)
雖然通常建議您引發(fā)派生自 std::exception 的類(lèi)型,但 C++ 使您能夠引發(fā)任何類(lèi)型的異常??梢酝ㄟ^(guò)指定與引發(fā)的異常相同的類(lèi)型的 catch 處理程序或通過(guò)可捕獲任何類(lèi)型的異常的處理程序來(lái)捕獲 C++ 異常。
如果引發(fā)的異常的類(lèi)型是類(lèi),它還具有基類(lèi)(或類(lèi)),則它可由接受異常類(lèi)型的基類(lèi)和對(duì)異常類(lèi)型的基的引用的處理程序捕獲。請(qǐng)注意,當(dāng)異常由引用捕獲時(shí),會(huì)將其綁定到實(shí)際引發(fā)的異常對(duì)象;否則,它將為一個(gè)副本(與函數(shù)的參數(shù)大致相同)。
引發(fā)異常時(shí),將由以下類(lèi)型的 catch 處理程序捕獲該異常:

  • 可以接受任何類(lèi)型的處理程序(使用省略號(hào)語(yǔ)法)。
  • 接受與異常對(duì)象相同的類(lèi)型的處理程序;由于它是副本,因此 const 和 volatile 修飾符將被忽略。
  • 接受對(duì)與異常對(duì)象相同的類(lèi)型的引用的處理程序。
  • 接受對(duì)與異常對(duì)象相同的類(lèi)型的 const 或 volatile 形式的引用的處理程序。
  • 接受與異常對(duì)象相同的類(lèi)型的基類(lèi)的處理程序;由于它是副本,因此 const 和 volatile 修飾符將被忽略?;?lèi)的 catch 處理程序不得位于派生類(lèi)的 catch 處理程序的前面。
  • 接受對(duì)與異常對(duì)象相同的類(lèi)型的基類(lèi)的引用的處理程序。
  • 接受與異常對(duì)象相同的類(lèi)型的基類(lèi)的 const 或 volatile 形式的引用的處理程序。
  • 接受可通過(guò)標(biāo)準(zhǔn)指針轉(zhuǎn)換規(guī)則將引發(fā)的指針對(duì)象轉(zhuǎn)換為的指針的處理程序。

catch 處理程序出現(xiàn)的順序是有意義的,因?yàn)榻o定 try 塊的處理程序按它們的出現(xiàn)順序進(jìn)行檢查。例如,將基類(lèi)的處理程序放置在派生類(lèi)的處理程序的前面是錯(cuò)誤的。 找到一個(gè)匹配的 catch 處理程序后,不會(huì)檢查后續(xù)處理程序。因此,省略號(hào) catch 處理程序必須是其 try 塊的最后一個(gè)處理程序。例如:

// ...try{ // ...}catch( ... ){ // Handle exception here.}// Error: the next two handlers are never examined.catch( const char * str ){ cout << "Caught exception: " << str << endl;}catch( CExcptClass E ){ // Handle CExcptClass exception here.}

在此示例中,省略號(hào) catch 處理程序是已檢查的唯一處理程序。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧美亚洲精品在线观看| 日本爱爱免费视频| 成年女人毛片| 免费在线观看av网站| 91国产一区在线| 成人免费观看在线观看| 极品美女一区二区三区| 一区二区三区高清视频在线观看| wwwww在线观看免费视频| 亚洲人成网站精品片在线观看| 成人短视频软件网站大全app| 色综合天天综合| 欧美一区三区三区高中清蜜桃| 欧美va亚洲va国产综合| 欧美一区二区三区视频在线| 91看片在线免费观看| 精品一区二区三区五区六区| 色一区av在线| 男人的天堂视频网站| 五月天电影免费在线观看一区| 国产一区二区不卡老阿姨| 五月婷中文字幕| 日本中文字幕在线播放| 好吊色欧美一区二区三区| 黄色不卡一区| 狠狠综合久久av一区二区小说| 亚洲精品**中文毛片| 欧美一区二区三区男人的天堂| 欧美成人精品三级网站| 精品国产鲁一鲁一区二区三区| 成年网在线观看免费观看网址| segui88久久综合9999| 国产丝袜精品丝袜| 日本888xxxx| 成人动漫精品一区二区| 亚洲一区精品视频| 肉丝美足丝袜一区二区三区四| 美女主播视频一区| 玛丽玛丽电影原版免费观看1977| 中文字幕一区二区三| 日日摸日日添日日躁av| 九一国产在线| 成人在线免费观看视频| 玖玖精品国产| 韩国精品美女www爽爽爽视频| 亚洲精品99久久久久| 亚洲免费高清视频在线| 91精品国自产在线| 亚洲av永久纯肉无码精品动漫| 日韩精品免费视频一区二区三区| 在线不卡的av| 一区二区三区韩国| 99热这里只有精品9| 日韩免费视频一区二区视频在线观看| 免费黄色网址在线观看| 无码精品国产一区二区三区免费| 日本黄色电影网站| 大波视频国产精品久久| 在线观看日韩片| 91高清免费看| 国产精品视频一区二区三区,| 久久欧美一区二区| 国产又黄又猛又粗| 久久精品夜色噜噜亚洲a∨| 日韩久久精品一区二区三区| 国产色婷婷国产综合在线理论片a| 91黄色精品| 在线观看免费黄视频| 好男人免费精品视频| 日本少妇高潮喷水视频| 在线观看国产一区二区三区| 99re6热只有精品免费观看| 成人美女视频在线看| 免费看91视频| 欧美性xxxx在线播放| 精品无人码麻豆乱码1区2区| 亚洲人妖在线| 成人福利影院| 超碰91在线播放| 亚洲电影男人天堂| 麻豆精品视频入口| 欧美性理论片在线观看片免费| 一区在线影院| 2019国产精品视频| 国产午夜电影| 日本不卡一区二区三区高清视频| 麻豆乱码国产一区二区三区| 韩国一区二区三区美女美女秀| 国产精久久一区二区三区| 激情小说激情视频| 欧美日韩一区精品| 邪态动恶图27期gif| 香蕉青柠影院| 色综合伊人色综合网| 免费毛片一区二区三区| 国产成人精品一区二区无码呦| 第一社区sis001原创亚洲| 国产美女视频免费看| 欧美成va人片在线观看| 高清av一区二区| 少妇特黄一区二区三区| 日韩欧美一区二区不卡| 夜夜嗨一区二区| 91福利入口| a在线观看视频| 日本精品免费在线观看| 素人fc2av清纯18岁| 欧美二区观看| 在线播放中文字幕一区| 欧美电影免费| 精品福利一区二区三区| 91免费在线观看网站| 亚洲v精品v日韩v欧美v专区| 国产精品男人爽免费视频1| 国产亚洲女人久久久久毛片| 中国女人特级毛片| 欧美自拍视频在线观看| 欧美亚一区二区三区| 国产视频在线观看一区二区三区| 国产精品入口久久| 亚洲欧美日韩另类精品一区二区三区| 伦一区二区三区中文字幕v亚洲| 涩涩网在线视频| 欧美亚洲尤物久久| 你懂得视频网站| 成人日日夜夜| 久久久伦理片| 欧美成人黑人猛交| 一本色道精品久久一区二区三区| 日韩欧美看国产| 亚洲精品视频一区二区三区| 亚洲第一综合天堂另类专| 久久精品国产精品亚洲精品色| 导航艳情国产电影| 亚洲国产成人自拍| 亚洲狠狠婷婷综合久久久| 日韩毛片在线观看| 亚洲在线观看视频网站| 国产成人久久精品麻豆二区| 欧美极品欧美精品欧美视频| 99久久人妻无码精品系列| 日韩av片子| www.99av.com| 精品国产_亚洲人成在线| 亚洲精品成人av久久| 精品人妻一区二区色欲产成人| 天天爱天天做色综合| 久久免费视频网站| 免费在线观看av网址| 欧美视频免费看| 免费色视频在线观看| freehdxxxx| 蜜桃麻豆www久久国产精品| 在线不卡a资源高清| 天天舔天天干天天操| 成人性生交大免费看| 久久久久久久久久久人体| 2019中文字幕免费视频| 成人一道本在线| 亚洲综合成人在线视频| 亚洲经典在线看| 亚洲男人影院| 国产精品久久久久久久久久久不卡| 日韩精品免费视频一区二区三区| 欧美男生操女生| www.夜夜骑.com| 国产黄色小视频在线观看| 亚洲欧美日本一区二区三区| 91黄色免费视频| 粉嫩av一区二区三区四区五区| av网站在线播放| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 91亚洲精品久久久蜜桃| 国产精品免费一区二区| 亚洲精品国产免费| 男女视频在线观看| 欧美成人免费电影| 日本人妻丰满熟妇久久久久久| 国产日本视频| 成人福利视频网| 国产综合中文字幕| 亚洲一级生活片| 亚洲电影有码| 国产精品久久久精品a级小说| 欧美国产1区2区| freexxx性亚洲精品| 欧美××××黑人××性爽| 欧美亚洲日本一区| 91免费欧美精品| 亚洲人成精品久久久久久| 蜜桃久久精品成人无码av| 欧美日韩国产黄| 亚洲午夜视频| h片在线观看| 精品国产自在精品国产浪潮| 欧美日韩精品中文字幕| 一本一道久久a久久精品综合| 免费h片在线观看| 欧美一区二区三区视频在线| 99久久国产热无码精品免费| 亚洲综合五月天婷婷丁香| 欧美成在线视频| 国产精品一二三四区| 国产原创视频在线观看| 香蕉视频在线网址| 亚洲国产欧美一区二区三区同亚洲| 欧美h版在线| 色婷婷成人网| 触手亚洲一区二区三区| 日本福利视频导航| av一二三不卡影片| 久久久久久人妻一区二区三区| 999精品在线| 神马久久午夜| 天天噜天天色| 欧美日韩极品在线观看一区| jlzzjlzz亚洲日本少妇| 91精品麻豆日日躁夜夜躁| 亚洲成人教育av| 99精品视频免费观看| 精品一区二区在线欧美日韩| 亚洲高清av一区二区三区| 日韩不卡视频一区二区| 久久国产精品偷| 最新中文字幕2018| 男人晚上看的视频| 国产精品三区四区| 欧美视频免费在线观看| 欧美激情成人动漫| 久久久久久久久久久电影| 国产裸体舞一区二区三区| 亚洲精品8mav| 91亚洲国产成人精品一区二三| 国产成人精品电影久久久| 欧美日韩国产美女| 国产成人在线视频免费播放| 影音先锋5566资源网| 亚洲国内在线| 国产高清在线不卡| 91黄色免费视频| 亚洲一区二区成人在线观看| 国产经典中年夫妇盗摄| 风韵丰满熟妇啪啪区老熟熟女| aa在线视频| 今天的高清视频免费播放成人| 99久久免费精品| 成人午夜sm精品久久久久久久| 欧美精品手机在线| av在线免费看片| 亚洲美女免费精品视频在线观看| 亚洲综合久久网| 欧美极品视频在线观看| 性欧美高清强烈性视频| 欧美在线视频观看免费网站| 久久天堂精品| 国产色婷婷在线| 日本a在线天堂| 爱爱视频网站| 五月天丁香综合久久国产| 日本欧美精品在线| 亚洲av毛片在线观看| 欧美一级日韩免费不卡| 日韩不卡的av| 性欧美ⅴideo另类hd| 欧美日韩aaaa| 亚洲欧美日本一区二区三区| 国产成人免费9x9x人网站视频| 欧美自拍偷拍| 亚洲国产成人午夜在线一区| 狠狠色综合色综合网络| 欧美日韩亚洲国产成人| 国产精品一二三区| 一区二区三区欧洲区| 精品免费av| 麻豆乱码国产一区二区三区| 91久久久久久久一区二区| av成人男女| 91一区二区| 少妇激情一区二区三区| 992kp快乐看片永久免费网址| www.午夜色大片| 国产成人精品亚洲精品色欲| 在线亚洲一区| 国内综合精品午夜久久资源| 日本成人免费在线| 免费一级毛片在线观看| 国产av精国产传媒| 欧美韩日一区二区三区| 国产大奶视频| 激情欧美一区二区三区在线观看| 奇米色欧美一区二区三区| 九九久久电影| 欧美日本精品在线| 成人欧美一区二区三区黑人麻豆| 久久久午夜精品福利内容| 国产麻豆一区| 婷婷亚洲一区二区三区| 天堂久久一区二区三区| 日韩午夜激情电影| 香蕉久久一区二区三区| 91成人国产| 国产视频一区二区视频| 最近97中文超碰在线| 国产乱码午夜在线视频| 中文字幕在线不卡一区二区三区| 国产精品视频一区视频二区| 国产精品久久亚洲7777| 日韩欧美一级二级三级久久久| 26uuu亚洲电影| 99热这里只有精品66| 国产视频精品xxxx| 成人黄色大片在线观看| 国产乱码精品一区二三赶尸艳谈| 人人网欧美视频| 欧美在线一区视频| eeuss影院第1页在线| 中文在线观看免费| 日本不卡视频在线| 日韩视频在线播放| 自拍视频第一页| 午夜剧场成人观在线视频免费观看| 亚洲美女少妇撒尿| 成人影院网站| 伊人免费视频| 精品国内二区三区| 日本欧美久久久久免费播放网| 中文字幕av网| 乱中年女人av三区中文字幕|