六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

C++箴言:防范異常離開析構(gòu)函數(shù)

[摘要]C++ 并不禁止從析構(gòu)函數(shù)中引發(fā)異常,但是這確實妨礙了實踐。至于有什么好的理由,考慮:      class Widget    public:     ...     ~Widget() ... // assume this might emit an exception   ;     ...
C++ 并不禁止從析構(gòu)函數(shù)中引發(fā)異常,但是這確實妨礙了實踐。至于有什么好的理由,考慮:

  

  class Widget {

   public:

    ...

    ~Widget() { ... } // assume this might emit an exception

  };

  

  void doSomething()

  {

   std::vector v;

   ...

  } // v is automatically destroyed here

  當 vector v 被析構(gòu)時,它有責(zé)任銷毀它包含的所有 Widgets。假設(shè) v 中有十個 Widgets,在銷毀第一個的時候,拋出一個異常。其他 9個 Widgets 仍然必須被銷毀(否則他們持有的任何資源將被泄漏),所以 v 應(yīng)該調(diào)用它們的析構(gòu)函數(shù)。但是假設(shè)在這個調(diào)用期間,第二個 Widgets 的析構(gòu)函數(shù)又拋出一個異�!,F(xiàn)在有兩個異常同時在活動中,對于 C++ 來說這太多了。在非常巧合的條件下發(fā)生這樣兩個同時活動的異常,程序的執(zhí)行會終止或者引發(fā)未定義行為。在本例中,將引發(fā)未定義行為。與此相同,使用任何標準庫容器(比如,list,set),任何 TR1中的容器,甚至是一個數(shù)組,都可能會引發(fā)未定義問題。并非必須是容器或數(shù)組才會陷入麻煩。程序夭折或未定義行為是析構(gòu)函數(shù)引發(fā)異常的結(jié)果,即使沒有使用容器或數(shù)組也會如此。C++ 不喜歡引發(fā)異常的析構(gòu)函數(shù)。 這比較容易理解,但是如果你的析構(gòu)函數(shù)需要執(zhí)行一個可能失敗而拋出異常的操作,該怎么辦呢?例如,假設(shè)你與一個數(shù)據(jù)庫連接類一起工作:

  

  class DBConnection {

   public:

    ...

   

    static DBConnection create(); // function to return

    // DBConnection objects; params

    // omitted for simplicity

  void close(); // close connection; throw an

  }; // exception if closing fails 


主站蜘蛛池模板: 中文字幕第315页 | 色爱区综合 | 在线播放日本爽快片 | 青青草免费在线视频 | 伊人色婷婷综在合线亚洲 | 视频一区二区三区欧美日韩 | 日韩伦理片网站 | 天天躁夜夜躁狠狠躁 | 特一级毛片| 日日夜夜操天天干 | 日韩欧美视频二区 | 色综合影视 | 日韩不卡免费视频 | 人妖无码| 欧美综合中文字幕久久 | 亚洲视频免费在线观看 | 天天插天天透 | 最近日本免费观看视频 | 亚洲 欧美 日韩 另类 | 性激烈欧美三级在线播放 | 青草国内精品视频在线观看 | 亚洲精品高清在线观看 | 最近更新免费中文字幕大全 | 亚洲欧美一区二区三区二厂 | 人人澡人摸人人爽歪歪 | 青草国内精品视频在线观看 | 日本激情视频网站 | 日本免费色网站 | 在线视频亚洲 | 四虎影视永久免费观看网址 | 青青青青青免精品视频 | 亚洲综合偷自成人网第页色 | 日本在线观看视频 | 欧美一级黄色片在线观看 | 新版天堂中文资源8在线 | 色综综| 色网站免费观看 | 日本视频在线免费 | 日本高清免费在线观看 | 四虎精品久久久久影院 | 五月婷婷六月丁香 |