詳解C++異常處理機制示例介紹
1.C++異常處理的套路
C++異常處理機制之拋出異常關鍵字:throw
throw關鍵字的使用:
在哪可能出現異常就在哪裡使用throw關鍵字拋出異常。 這個異常可以使用一個常量,字符串,或類對象,都可以來拋出。 throw + 常量、字符串、數對象 :用表示拋出一個異常。 throw拋出的異常將層層向外拋出,至少有try….catch…語句來捕獲這個異常並處理這個異常。 如果最外層的主函數也不進行處理,那麼主程序將自動停止。
使用try{ …. } catch(exp ){..} 捕獲並處理異常:
try { //有可能出現的異常的代碼放在try語句塊中。 //在try語句塊中就可以捕獲這個異常。 //如果try語句塊中的代碼出現異常,即自動跳轉到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<<"被除數不能為0"<<endl; } } return 0; }
結果圖:
2.C++標準異常庫中常用的幾個異常處理類
2.1異常類的例子
#include <iostream> using namespace std; int my_add(int a,int b) { if(b==0){ out_of_range err("被除數不能為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<<"被除數不能為0"<<endl; } }; int my_add(int a,int b) { if(b==0){ Err err("被除數不能為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; }
到此這篇關於詳解C++異常處理機制示例介紹的文章就介紹到這瞭,更多相關C++異常處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!