詳解C++異常處理機制示例介紹
1.C++異常處理的套路
C++異常處理機制之拋出異常關(guān)鍵字:throw
throw關(guān)鍵字的使用:
在哪可能出現(xiàn)異常就在哪里使用throw關(guān)鍵字拋出異常。 這個異??梢允褂靡粋€常量,字符串,或類對象,都可以來拋出。 throw + 常量、字符串、數(shù)對象 :用表示拋出一個異常。 throw拋出的異常將層層向外拋出,至少有try....catch...語句來捕獲這個異常并處理這個異常。 如果最外層的主函數(shù)也不進行處理,那么主程序?qū)⒆詣油V埂?/p>
使用try{ .... } catch(exp ){..} 捕獲并處理異常:
try
{
//有可能出現(xiàn)的異常的代碼放在try語句塊中。
//在try語句塊中就可以捕獲這個異常。
//如果try語句塊中的代碼出現(xiàn)異常,即自動跳轉(zhuǎn)到catch語句塊進行異常處理。
}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++標準異常庫中常用的幾個異常處理類

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;
}到此這篇關(guān)于詳解C++異常處理機制示例介紹的文章就介紹到這了,更多相關(guān)C++異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言超詳細講解函數(shù)棧幀的創(chuàng)建和銷毀
我們知道c語言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過本文給大家分享c語言函數(shù)棧幀的創(chuàng)建和銷毀過程,一起看看吧2022-05-05
C/C++產(chǎn)生隨機數(shù)函數(shù)簡單介紹
這篇文章主要為大家詳細介紹了C/C++產(chǎn)生隨機數(shù)函數(shù)的實現(xiàn)方法,如何使用C/C++產(chǎn)生隨機數(shù)函數(shù),感興趣的小伙伴們可以參考一下2016-04-04

