c++远征之多态篇——异常处理
生活随笔
收集整理的這篇文章主要介紹了
c++远征之多态篇——异常处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下內容源于慕課網的學習整理,如有侵權,請告知刪除。
1、關于異常的一些概念
異常:程序運行期出現的錯誤。
- 數組下標越界;
- 除數為0;
- 內存不足;
- ……
異常處理:對有可能發生異常的地方做出預見性的安排。
異常處理使用的關鍵字
- try { ? 這下面的代碼是主體邏輯 ?} ? catch{ ?這下面的代碼異常處理 }
- throw xxx 拋出異常,其中xxx可以是數字(各種類型的),也可以是類名?
基本思想:主邏輯和異常處理分離。
2、c++中異常處理流程
- 假設其中f3調用f2,f2調用f1,在f1運行時出現錯誤。
- 出現錯誤時,f1將錯誤拋給f2解決;
- 如果f2不能解決,則把錯誤拋給f3解決;
- 如果f3也解決不了,則把錯誤拋給操作系統。
- 此時操作系統簡單粗暴地提示崩潰。
3、細節講解
- try中運行fun1的代碼,當fun1出現異常時,拋出1,給catch捕捉到,然后判斷什么,決定哪種異常處理。
- 也可能是一對多的關系;
- 最后catch(…)表示都不匹配時,做的異常處理。這里…表示任何內容。
- 例子如下
- 此時在getChar出錯,則不會執行cout<<ch<<endl;
4、異常處理和多態的關系
- 定義一個異常類作為接口類,旗下細分各類異常;
- 之后出現異常時,都可以用父類去捕獲了。
5、代碼示例
#include <iostream> #include <string> #include <stdlib.h> using namespace std;/*函數division的兩個參數為dividend(被除數)和divisor(除數) 要求用戶輸入除數和被除數,并作為參數傳遞給division函數 如果除數為0,則拋出異常,并被捕獲,將異常的內容顯示到屏幕上 *//*** 定義函數division* 參數整型dividend、整型divisor*/ int division(int dividend, int divisor) {if(0 == divisor){// 拋出異常,字符串“除數不能為0”throw string("除數不能為0");}else{return dividend / divisor;} }int main(void) {int d1 = 0;int d2 = 0;int r = 0;cin >> d1;cin >> d2;// 使用try...catch...捕獲異常try{r=division(d1,d2); }catch(const string& e){// cout<<"除數不能為0"<<endl;cout<<e<<endl;}return 0; }
總結
以上是生活随笔為你收集整理的c++远征之多态篇——异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五大常用算法概述
- 下一篇: 5G毫米波通信中一些量化的概念