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

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


主站蜘蛛池模板: 日韩一级一欧美一级国产 | 青草草在线观看免费视频 | 日韩在线视频网 | 色优久久 | 四虎国产精品永久地址48 | 日本高清网址 | 色域综合网 | 日本高清视频免费在线观看 | 欲色影视天天一区二区三区色香欲 | 欧美在线观看一区二区三区 | 日韩 欧美 亚洲 中文字幕 | 一级黄色在线观看 | 亚洲第一页视频 | 天堂网a| 日韩一级在线视频 | 天天操夜夜添 | 亚洲欧美日韩国产精品影院 | 一二三四在线观看免费高清观看 | 日韩免费一区二区三区 | 中文字幕亚洲一区二区v@在线 | 亚洲天码中文字幕第一页 | 日韩亚洲欧美视频 | 欧美特黄特色aaa大片免费看 | 中文字幕精品在线视频 | 伊人啪啪 | 日日干天天射 | 日韩中文有码高清 | 欧美在线观看不卡 | 鸥美一级黄色片 | 色噜噜狠狠狠综合曰曰曰88av | 色综合久久综合 | 亚洲国产乱码在线精品 | 日韩黄色中文字幕 | 日韩欧美不卡视频 | 青草草在线 | 欧美一级片免费 | 日本午夜免费福利视频 | 日不卡 | 欧美性视屏 | 在线视频欧美日韩 | 伊人影视传媒有限公司 |