詳解C++異常處理機(jī)制示例介紹
1.C++異常處理的套路
C++異常處理機(jī)制之拋出異常關(guān)鍵字:throw
throw關(guān)鍵字的使用:
在哪可能出現(xiàn)異常就在哪里使用throw關(guān)鍵字拋出異常。 這個(gè)異常可以使用一個(gè)常量,字符串,或類對象,都可以來拋出。 throw + 常量、字符串、數(shù)對象 :用表示拋出一個(gè)異常。 throw拋出的異常將層層向外拋出,至少有try....catch...語句來捕獲這個(gè)異常并處理這個(gè)異常。 如果最外層的主函數(shù)也不進(jìn)行處理,那么主程序?qū)⒆詣?dòng)停止。
使用try{ .... } catch(exp ){..} 捕獲并處理異常:
try { //有可能出現(xiàn)的異常的代碼放在try語句塊中。 //在try語句塊中就可以捕獲這個(gè)異常。 //如果try語句塊中的代碼出現(xiàn)異常,即自動(dòng)跳轉(zhuǎn)到catch語句塊進(jìn)行異常處理。 }catch(被捕獲的異常) { //catch的語句塊里是用來處理異常。 }
代碼實(shí)例:
#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)異常庫中常用的幾個(gè)異常處理類
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封裝一個(gè)自定義異常類
#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++異常處理機(jī)制示例介紹的文章就介紹到這了,更多相關(guān)C++異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言超詳細(xì)講解函數(shù)棧幀的創(chuàng)建和銷毀
我們知道c語言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實(shí)main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過本文給大家分享c語言函數(shù)棧幀的創(chuàng)建和銷毀過程,一起看看吧2022-05-05Opencv實(shí)現(xiàn)用于圖像分割分水嶺算法
這篇文章主要為大家詳細(xì)介紹了Opencv實(shí)現(xiàn)用于圖像分割分水嶺算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡單介紹
這篇文章主要為大家詳細(xì)介紹了C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)的實(shí)現(xiàn)方法,如何使用C/C++產(chǎn)生隨機(jī)數(shù)函數(shù),感興趣的小伙伴們可以參考一下2016-04-04