91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++異常3

發布時間:2020-07-21 20:25:11 來源:網絡 閱讀:397 作者:神ge 欄目:編程語言
#include <iostream>                                                                                                                    
#include <iostream>
using namespace std;
class FileError{};
class MemoryError{};
void foo(void)throw(MemoryError,FileError,int,double);
int main(void)
{
    try{
        foo();
    }
    catch(FileError& ex){
        cout << "file error!" << endl;
        return -1;
    }
    catch(MemoryError& ex){
        cout << "memory error!" << endl;
        return -1;
    }
    catch(int ex&){//int類型只能捕捉double,同樣double只能捕捉double.
        cout << ex << endl;
    }
    catch(...){//這里會捕捉所有異常列表的異常對象
        cout << "other error!" << endl;
        return -1;
    }
    return 0;
}
void foo(void)throw(FileError,MemoryError,int,double){//與函數聲明一樣,不多不少.
    throw -1;
    //throw FileError();
}

異常說明:

1)可以在函數原型中增加異常說明,說明該函數所有可能拋出的異常類型.

 返回類類型 函數名(形參表)throw(對象1,對象2,...);(這里對象可以為基本類型)

對象1,對象2...被稱為異常說明表

2)函數的異常說明是一種承諾,表示函數所拋出的異常不會超出異常說明表,如果超出,將無法被捕獲

即使catch中接受對象的類型也無法被捕獲,最終會被系統捕獲,終止程序.

3)throw;表示可以拋出任何異常,thow();表示不會拋出異常

4)如果函數申明和定義分開,如果聲明時有異常說明,則定義時也要有異常說明,異常說明表要一模一樣,

當然,異常說明表中異常對象的位置可以隨意.

5)如果基類中的虛函數帶有異常說明,那么該函數在子類中的覆蓋版本不能在異常說明表中拋出的異常對象不能比基類多(屬于包含關系)

6)如果構造函數中拋出異常,則對象將不會調用析構函數(怎么都不會調用),這時需要手動銷毀在異常之前

7)不允許在析構函數中拋出異常,如果你在析構中拋異常,這個類一旦實例化,就報錯.
所有動態分配的資源.

#include <iostream>
using namespace std;
class A{
    public:
        A():m_p(new int(5)){
            cout << "A:A()" << endl;
            delete m_p;
            throw -1;//析構函數不會調用,拋出異常前,手動釋放動態分配的內存
        }
        ~A(){
            cout << "haha" << endl;
            delete m_p;
        }                                                                                                                              
    private:
        int* m_p;
};
int main(void){
    A a;//這樣就直接報錯.
    return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万山特区| 武强县| 大石桥市| 菏泽市| 长岭县| 资溪县| 邢台市| 从江县| 伊川县| 西吉县| 寿宁县| 中江县| 工布江达县| 油尖旺区| 忻州市| 法库县| 陇川县| 纳雍县| 措勤县| 随州市| 汝州市| 泗阳县| 河间市| 焉耆| 临泽县| 三亚市| 东至县| 江达县| 逊克县| 稻城县| 清原| 湖北省| 夹江县| 通辽市| 全州县| 浑源县| 福建省| 阳山县| 江油市| 阳西县| 思南县|