青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

MySpace

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  18 隨筆 :: 2 文章 :: 10 評(píng)論 :: 0 Trackbacks

異常可以通過(guò) throw 拋出,比如我定義一個(gè)函數(shù)別的不做只管拋出異常

先定義一個(gè)異常類(lèi)

class Ex1
{
public:
 string getString()
 {
  return "Ex1 ERROR!";
 }
};

class Ex2:Ex1
{
public:
 string getString()
 {
  return "Ex2 ERROR!";
 }
};

void func1()
{
 Ex1 *e = new Ex2;
 throw e;
}

再定義一個(gè)函捕獲異常
void func2()
{
 try
 {
  func1();
 }catch(Ex1 e)
 {
   //處理異常
 }
}

 在函數(shù) func1 中的 throw e 代碼中,拋出的是不是 Ex2 對(duì)象,答案是否定的。在 throw 的時(shí)候系統(tǒng)會(huì)自動(dòng)對(duì) e 進(jìn)行一個(gè)拷貝,無(wú)論 catch 的時(shí)候是取值、引用還是指針,throw 的時(shí)候必定要進(jìn)行一個(gè)拷貝,因?yàn)橐WC當(dāng) e 的作用域過(guò)了之后這個(gè)值還能存在。這個(gè)拷貝調(diào)用該類(lèi)的拷貝構(gòu)造函數(shù)。由 e 是這么定義的 Ex1 *e = new Ex2; 那系統(tǒng)調(diào)用哪個(gè)類(lèi)的構(gòu)造函數(shù)呢?我們來(lái)分析一下,Ex1 是 e 的靜態(tài)類(lèi)型,Ex2 是 e 的動(dòng)態(tài)類(lèi)型。編譯器是根據(jù)對(duì)象的靜態(tài)類(lèi)型的來(lái)進(jìn)行拷貝的,調(diào)用的是 Ex1 的拷貝構(gòu)造函數(shù),當(dāng)然拋出的也是 Ex1 類(lèi)型的對(duì)象。
 在捕獲異常的時(shí)候,如果這樣 catch(Ex1 e) ,那么編譯器在此處則會(huì)將拋出的異常對(duì)象再拷貝一份然后賦值給參數(shù)并保存在該異常處理的段中,編譯器生成的第一份拷貝在以后會(huì)析構(gòu)掉。如果使用 catch(Ex1& e) 來(lái)?yè)浍@,系統(tǒng)則將第一次拷貝的引用傳遞給 e ,這樣比上一種方式少了一次拷貝,但是相對(duì)同種方式的函數(shù)傳參方式有多了一次拷貝。傳遞指針同樣如此。
 
 try
 {
  func1();
 }catch(Ex1& e)
 {
   //處理異常
 }catch(Ex2& e)
 {
   //處理異常
 }
 
 從結(jié)構(gòu)上來(lái)講,我感覺(jué)跟 switch case 語(yǔ)句差不多但又有所不同,首先 catch 了一場(chǎng)之后不用 break 就能跳出(好象是一句廢話)。
再有就是 catch(Ex1& e) 中對(duì)傳進(jìn)來(lái)的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換的時(shí)候跟普通函數(shù)是有區(qū)別的。它只接受兩點(diǎn):第一,接受向基類(lèi)方向的繼承層次的轉(zhuǎn)換。,第二,接受類(lèi)型化的指針轉(zhuǎn)換成無(wú)類(lèi)型化的指針。另外如普通函數(shù)對(duì)參數(shù)的類(lèi)型轉(zhuǎn)換支持 int 到 double 的轉(zhuǎn)換,但是在 catch 中卻是不支持此種轉(zhuǎn)換的。

 如果拋出異常的函數(shù)寫(xiě)成
 void func1()
 {
  Ex2 &e = new Ex2;
  throw e;
 }
 
 那么對(duì)于這段代碼
 try
 {
  func1();
 }catch(Ex1& e)
 {
   //處理異常
 }catch(Ex2& e)
 {
   //處理異常
 }
 來(lái)說(shuō),catch(Ex2& e) 是用于撲獲不到該異常的。當(dāng)異常以傳遞指針的方式來(lái)做的時(shí)候,如果第一個(gè)catch 為
 catch(void× e)
 的話,那后面的 catch 則就全部成了擺設(shè)了。不過(guò)有的編譯器會(huì)對(duì)這種寫(xiě)法作出警告信息或是錯(cuò)誤信息,我在 VS2005 中就得到了錯(cuò)誤信息,編譯無(wú)法通過(guò)。不知道別的編譯器會(huì)怎么樣,這個(gè)還沒(méi)有測(cè)試過(guò)。

 另外還有個(gè)地方需要注意,
 Ex2 e;
 throw e;
 但是在 catch 時(shí)為
 catch(Ex1 e)
 由于都是進(jìn)行傳值操作,catch 中轉(zhuǎn)換之后得到 e 是 Ex1 類(lèi)型的對(duì)象,那么這就會(huì)產(chǎn)生“切片”問(wèn)題,e 對(duì)象中的虛函數(shù)實(shí)際上是 Ex1 中的,Ex2 中的成員在 e 中不復(fù)存在

posted on 2008-06-19 09:55 yang-chunlei 閱讀(258) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品99久久久久久宅男| 亚洲免费播放| 久久精品国产2020观看福利| 国产精品视频午夜| 久久激情视频久久| 欧美亚洲一级| 激情亚洲网站| 亚洲高清免费在线| 欧美日韩国产小视频| 亚洲综合日本| 欧美一区二区三区免费看| 一区二区三区在线观看国产| 欧美成人69av| 欧美日韩亚洲精品内裤| 亚洲一区在线免费观看| 激情六月婷婷久久| 亚洲国产精品久久久久秋霞蜜臀| 欧美精品久久久久久| 香蕉久久夜色精品| 久久久av水蜜桃| 一区二区三区高清在线观看| 亚洲欧美在线aaa| 亚洲国产日韩精品| 亚洲网友自拍| 亚洲国产精品成人精品| 日韩视频中文| 精品va天堂亚洲国产| 亚洲精品资源美女情侣酒店| 国产日韩成人精品| 亚洲精品一级| 精品91在线| 一区二区三区日韩| 依依成人综合视频| av成人老司机| 亚洲国产精品成人久久综合一区 | 91久久精品国产91性色tv| 亚洲精一区二区三区| 狠狠入ady亚洲精品| 国产亚洲成精品久久| 欧美成人性生活| 国产日韩欧美综合在线| 亚洲精品视频啊美女在线直播| 国产日本亚洲高清| 日韩午夜黄色| 最新亚洲激情| 久久精品99国产精品| 亚洲男人的天堂在线| 久久影院亚洲| 久久免费的精品国产v∧| 欧美日韩伦理在线| 亚洲国产欧美在线| 国产一区二区三区久久| 亚洲精品在线观看视频| 亚洲国产精品女人久久久| 午夜视频久久久久久| 一本一本久久a久久精品综合妖精| 久久国产直播| 久久久精品免费视频| 欧美视频在线一区| 亚洲激情不卡| 亚洲日本中文字幕| 久久香蕉国产线看观看av| 欧美在线视屏| 国产精品久久波多野结衣| 亚洲欧洲一区二区在线观看| 亚洲激精日韩激精欧美精品| 久久夜色精品国产| 欧美寡妇偷汉性猛交| 激情久久五月天| 久久久水蜜桃av免费网站| 久久精品视频在线播放| 国产偷久久久精品专区| 欧美自拍丝袜亚洲| 久久影视三级福利片| 伊人久久综合97精品| 久久尤物电影视频在线观看| 美日韩丰满少妇在线观看| 亚洲桃花岛网站| 亚洲一区二区三区国产| 国产精品成人午夜| 午夜精品一区二区在线观看| 久久精品国产第一区二区三区最新章节| 国产精品网站在线| 欧美影院在线| 亚洲国产二区| 亚洲一区二区三区影院| 国产精品日本欧美一区二区三区| 亚洲女性裸体视频| 久久伊人精品天天| 亚洲日本一区二区| 欧美亚日韩国产aⅴ精品中极品| 这里只有精品丝袜| 久久久久久有精品国产| 亚洲成色777777在线观看影院| 欧美成人dvd在线视频| 亚洲免费高清视频| 久久精品国产久精国产一老狼| 一区二区在线视频| 欧美日韩成人| 欧美亚洲午夜视频在线观看| 欧美二区在线看| 宅男精品视频| 国产日韩一区欧美| 欧美精品在线免费| 午夜久久影院| 亚洲清纯自拍| 久久精品综合一区| 一区二区三区 在线观看视频| 国产精品一区二区在线观看不卡| 久久久久99精品国产片| 亚洲人人精品| 久久精品亚洲一区二区三区浴池| 亚洲人成在线免费观看| 国产美女精品在线| 欧美高清hd18日本| 欧美在线日韩在线| 一本久道综合久久精品| 久久久久久久97| 亚洲一区二区视频| 亚洲日本无吗高清不卡| 国产区在线观看成人精品| 欧美极品aⅴ影院| 久久精品一区| 一区二区三区视频免费在线观看| 浪潮色综合久久天堂| 亚洲欧美一区二区三区久久| 日韩视频专区| 亚洲国产日韩在线| 国产一区二区三区不卡在线观看| 欧美日韩精品免费观看视一区二区 | 国产一区二区视频在线观看| 欧美日韩国产成人精品| 欧美成人亚洲成人| 噜噜噜91成人网| 久久久www免费人成黑人精品| 亚洲综合日韩中文字幕v在线| 亚洲理伦在线| 亚洲日韩欧美视频| 欧美顶级艳妇交换群宴| 榴莲视频成人在线观看| 久久久www| 久久久久国产精品麻豆ai换脸| 亚洲免费婷婷| 亚洲欧美国产日韩天堂区| 一区二区精品在线| 日韩视频一区二区在线观看| 亚洲电影激情视频网站| 激情综合视频| 激情欧美丁香| 亚洲电影在线观看| 影音先锋日韩资源| 在线欧美三区| 亚洲国产精品一区二区尤物区| 国色天香一区二区| 激情久久久久久久久久久久久久久久| 国产视频一区二区三区在线观看| 国产区日韩欧美| 国产综合香蕉五月婷在线| 国产综合在线看| 在线欧美日韩| 日韩午夜精品视频| 一本色道久久综合亚洲精品婷婷| 日韩亚洲在线| 亚洲欧美日韩国产精品| 性欧美xxxx视频在线观看| 欧美一区高清| 久久综合狠狠综合久久综合88| 久久久一本精品99久久精品66| 蜜桃伊人久久| 欧美激情一区在线| 一区二区三区国产| 亚洲在线1234| 久久一区二区三区国产精品| 免费毛片一区二区三区久久久| 欧美大片在线观看一区二区| 欧美日韩在线不卡一区| 国产九九视频一区二区三区| 国内精品美女av在线播放| 亚洲国产成人在线播放| 亚洲午夜女主播在线直播| 欧美影院视频| 亚洲电影观看| 亚洲欧美日韩久久精品| 欧美成人免费在线视频| 国产精品久久久久久久浪潮网站| 国产亚洲欧美在线| 亚洲精品国产无天堂网2021| 亚洲综合电影一区二区三区| 久久久久久午夜| 日韩亚洲一区二区| 久久久99爱| 国产精品久久毛片a| 亚洲第一福利在线观看| 亚洲女爱视频在线| 亚洲国产精选| 久久国产精品99精品国产| 欧美日韩在线电影| 亚洲大片在线| 亚洲欧美日韩国产中文| 亚洲黄色影院|