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

明輝手游網(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 


主站蜘蛛池模板: 日韩在线视频免费看 | 青草视频在线免费观看 | 亚洲图片另类 | 性刺激性色爽爱小说 | 中文字幕亚洲一区 | 在线免费亚洲 | 在线免费观看亚洲视频 | 亚洲国产成人久久一区二区三区 | 亚洲国产美女精品久久 | 色妞精品一区二区 | 青草草在线观看免费视频 | 亚洲国产成人影院播放 | 在线观看亚洲 | 伊人久久大香线蕉综合热线 | 亚洲精品色婷婷在线影院麻豆 | 日韩激情影院 | 亚洲欧美视频在线 | 日本高清观看视频 | 欧美在线a级高清 | 天天艹夜夜 | 日韩α片 | 青草草在线| 中国美女牲交一级毛片 | 日韩美女免费线视频网址 | 性感美女香蕉视频 | 亚洲天堂在线视频观看 | 亚洲最大的成人网 | 中文字幕不卡高清免费 | 情欲天堂 | 青娱乐欧美 | 青草青在线 | 日韩一区二区三区不卡视频 | 天天干天天操天天干 | 香蕉视频你懂的 | 亚洲男人的天堂久久香蕉网 | 四虎永久免费影院在线 | 视频在线观看h | 日韩精品在线观看免费 | 欧美亚洲一区二区三区在线 | 青草国内精品视频在线观看 | 中文字幕在线精品视频入口一区 |