日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

詳解C++異常處理機(jī)制示例介紹_C 語言

作者:lhb2998658795 ? 更新時間: 2022-10-12 編程語言

1.C++異常處理的套路

C++異常處理機(jī)制之拋出異常關(guān)鍵字:throw

throw關(guān)鍵字的使用:

在哪可能出現(xiàn)異常就在哪里使用throw關(guān)鍵字拋出異常。 這個異常可以使用一個常量,字符串,或類對象,都可以來拋出。 throw + 常量、字符串、數(shù)對象 :用表示拋出一個異常。 throw拋出的異常將層層向外拋出,至少有try....catch...語句來捕獲這個異常并處理這個異常。 如果最外層的主函數(shù)也不進(jìn)行處理,那么主程序?qū)⒆詣油V埂?/p>

使用try{ .... } catch(exp ){..} 捕獲并處理異常:

try
{
    //有可能出現(xiàn)的異常的代碼放在try語句塊中。
    //在try語句塊中就可以捕獲這個異常。
    //如果try語句塊中的代碼出現(xiàn)異常,即自動跳轉(zhuǎn)到catch語句塊進(jìn)行異常處理。
}catch(被捕獲的異常)
{
    //catch的語句塊里是用來處理異常。
}

代碼實例:

#include <iostream>
using namespace std;
int my_add(int a,int b)
{
    if(b==0){
        throw -1;
    }
    return a/b;
}
int add(int a,int b)
{
    return a+b+my_add(a,b);
}
int main()
{
    try {
        add(10,0);
    } catch (int num) {
        if(num==-1){
            cout<<"被除數(shù)不能為0"<<endl;
        }
    }
    return 0;
}

結(jié)果圖:

2.C++標(biāo)準(zhǔn)異常庫中常用的幾個異常處理類

2.1異常類的例子

#include <iostream>
using namespace std;
int my_add(int a,int b)
{
    if(b==0){
        out_of_range  err("被除數(shù)不能為0");
        throw err;
    }
    return a/b;
}
int add(int a,int b)
{
    return a+b+my_add(a,b);
}
int main()
{
    try {
        add(10,0);
    } catch (out_of_range & err) {
 
            cout<<err.what()<<endl;
    }
    return 0;
}

2.2封裝一個自定義異常類

#include <iostream>
using namespace std;
class Err
{
 string err;
public:
    Err(string err)
    {
        this->err=err;
    }
    string what()
    {
        cout<<"被除數(shù)不能為0"<<endl;
    }
};
int my_add(int a,int b)
{
    if(b==0){
        Err  err("被除數(shù)不能為0");
        throw err;
    }
    return a/b;
}
int add(int a,int b)
{
    return a+b+my_add(a,b);
}
int main()
{
    try {
        add(10,0);
    } catch (Err & err) {
 
            cout<<err.what()<<endl;
    }
    return 0;
}

原文鏈接:https://blog.csdn.net/a2998658795/article/details/126044696

欄目分類
最近更新