溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

c++異常1

發(fā)布時(shí)間:2020-07-19 06:22:47 來(lái)源:網(wǎng)絡(luò) 閱讀:310 作者:神ge 欄目:編程語(yǔ)言
include <iostream>                                                             
#include <cstdio>
using namespace std;

class A{
public:
    A(void){cout << "A::A()" << endl;}
    ~A(void){cout << "A::~A()" << endl;}
};
int func3(void){
    A a;
    FILE *fp = fopen("none.txt","r");
    if(!fp){
        throw -1;//拋出異常,跳轉(zhuǎn)到當(dāng)前作用域"}",這個(gè)異常既可以為基本類型,也可以為類類型
        cout << "func3" << endl;//不執(zhí)行
    }   
    fclose(fp);
    return 0;
}
int func2(void){
    A a;
    func3();//func3函數(shù)拋出異常后,在函數(shù)func2內(nèi)沒(méi)能處理,把異常接著拋,
            //所以會(huì)z直接跳到此作用域的"}"
    cout << "func2" << endl;//不會(huì)執(zhí)行
    return 0;//不執(zhí)行
}
int func1(void){
    A a;
    func2();//func1沒(méi)能處理來(lái)自func2的異常,異常接著拋,直接跳到此作用域的"}"
    cout << "func1" << endl;//不執(zhí)行
    return 0;//不執(zhí)行
}
int main(void)
{
    try{
        func1();
        //...
    }
    catch(int ex){//try語(yǔ)句塊下面必須為catch語(yǔ)句塊,是其他語(yǔ)句則報(bào)錯(cuò),這里catch捕獲
                  //到異常,然后繼續(xù)執(zhí)行.
     cout << "ex=" << ex << endl;
        cout << "file open error" << endl;
        return -1;
    }
    return 0;
}


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI