变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當前位置:首頁文章首頁 IT學院 IT技術

C++華麗的exception handling(異常處理)背后隱藏的陰暗面及其處理方法

作者:  來源:  發布時間:2012-2-1 8:32:23  點擊:
看看下面這個簡單例子:
#include <memory>
#include <iostream>
using namespace std;
class BaseClass
{
public:
    BaseClass(){};
    ~BaseClass()
    {
        throw runtime_error("example runtime error.");
    };
};
 
int main(int *argc , char **argv)
{
    BaseClass *pBase = new BaseClass;
    delete pBase;
    return 0;
}
 
在VS2008下調用teminate時候還會調用abort,這個程序會非正常結束,如果在main函數中試圖這樣做:
int main(int *argc , char **argv)
{
    BaseClass *pBase = new BaseClass;
    try
    {
        delete pBase;
    }
    catch(runtime_error &err)
    {
        cout<<err.what()<<endl;
    }
    return 0;
}
 
結果會跟上面一樣(非正常結束),因為delete是不會將任何異常傳遞到其外面的;一種比較折中的解決方法是,當destructor中存在異常拋出時,在destructor最后添加一個能捕獲所有異常的catch處理塊,catch處理塊又什么工作都不做,如下:
 
~BaseClass()
{
    try
    {
        throw runtime_error("error in destructor");
    }
    catch(...)
    {
    }
};
看起來是一種很壞很無奈的辦法,但正如Scott Meyers在《effective c++》中所說:
“一般而言,將異常吞掉是個壞主意,因為它壓制了"某些動作失敗"的重要信息!然而有時候吞下異常也比負擔"草率結束程序"或"不明確行為帶來的風險好”。
 
 
后記
對于很多exception handling的概念性細節(比如何時使用引用類型的異常捕捉、異常捕獲層次的類型轉換等等)我沒做任何闡述,可以去看看《C++ PRIMER》的第十七章,有著很想盡的講解。。。 對于MS編譯器對異常規范的不支持,我很難理解,因為G++編譯器確實是支持的。之前在討論C++的object布局時(點擊這里)也曾感嘆MS的編譯器在優化方面沒G++走得快,對于這些,或許是我運氣不好,老是碰到MS不如G++的地方,也或許是我現在幾乎不用G++編譯器的而體會不到其不如MS編譯器的地方的緣故吧。。。exception handling的確能為提高代碼質量的改善作出或多說少的貢獻,但華麗麗的外表下,因為用不好它而導致的程序的很多不明確(如teminate當前程序)和不正常(如資源泄露)行為也是令人比較頭大的地方。貌似只有多熟用有技巧性的用是唯一能解決所有問題的方法了。。

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
主站蜘蛛池模板: 日本一二区视频 | 自拍偷拍亚洲图片 | 国产一区免费视频 | 亚洲综合色秘密影院秘密影院 | 亚洲精品高清国产一久久 | 欧美video巨大粗暴多人 | 日本午夜影院在线 | 日韩美毛片 | 综合五月激情 | 日韩欧美中文字幕在线观看 | 精品欧美| 在线看片成人免费视频 | 欧美日视频 | 看免费黄色一级视频 | 一级女性全黄生活片免费 | 欧美三级成人理伦 | 成年人免费在线视频观看 | 757午夜视频国产精品 | 欧美综合自拍亚洲综合图自拍 | 欧美日韩国产专区 | 黄色毛片在线 | 国产伦精一区二区三区视频 | 57pao国产成视频免费播放 | 51成人| 日韩欧美高清视频 | 天天爽夜夜爽人人爽 | 日韩a视频 | 欧美一区二区三区在线播放 | 久久线看观看精品香蕉国产 | 亚洲一区二区免费 | 免费黄色在线看 | 日韩三级在线观看 | 毛片免费播放 | 亚洲国产欧美日韩第一香蕉 | 欧美高清无砖专区欧美精品 | 曰批全过程免费观看视频 | 日韩欧美视频免费观看 | 韩国 伦理 在线 | 一级 黄 色 片免费 一级 黄 色 毛片 | 高h喷水荡肉爽文np欲 | 亚洲一级毛片免费观看 |