詳解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++標(biāo)準異常庫中常用的幾個異常處理類

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語言中typedef和#define的用法與區(qū)別
這篇文章主要給大家介紹了關(guān)于C語言中typedef和#define的的用法、區(qū)別,以及陷阱。文中通過示例進行了詳細講解,感興趣的小伙伴可以了解一下2022-07-07
C++實現(xiàn)簡單的學(xué)生管理系統(tǒng)
本文給大家分享的是使用C++實現(xiàn)的簡單的學(xué)生管理系統(tǒng)的代碼,主要是通過鏈表來實現(xiàn),非常簡潔,有需要的小伙伴可以參考下。2015-07-07

