国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++中的異常處理

2019-11-08 02:34:19
字體:
供稿:網(wǎng)友

異常的簡介和基本使用

異常就是運行時出現(xiàn)的不正常,例如運行時耗盡了內(nèi)存或遇到意外的非法輸入,異常存在于程序的正常功能之外,并要求程序立即處理,不能不處理異常,常是足夠重要的,使程序不能繼續(xù)正常執(zhí)行的事件,如果找不到匹配的catch,程序就調(diào)用庫函數(shù)terminate

下面是處理異常的代碼:

#include<iostream> using namespace std; void func1(){ throw 3.0;}void func2(){ throw string("no"); //throw "出錯,除數(shù)為0了";使用catch(char *s)捕獲}void func3(){ throw IndexException();}int main() { try{ int a=3,b=0; int c=a/b; } catch(...){ } //這里catch后圓括號中的...指的是捕獲所有異常 //func1()的異常捕獲處理: try{ func1(); } catch(double){ } //使用catch(double &a){ cout<<a<<endl;輸出3.0 } //func2()的異常捕獲處理: try{ func2(); } catch(string& val){ cout<<val<<endl; //輸出"no" } //func3()的異常捕獲: try{ func3(); } catch(IndexException &e){ e.PRintException();//異常提示信息的輸出,輸出:提示:下標越界 } //若是catch(Exception &e){ },打印結(jié)果一樣 return 0; }

拋出異常的時候,將暫停當前函數(shù)的執(zhí)行,檢查與該try相關的catch子句,看是否其中之一與被拋出對象相匹配,如果找到匹配的catch,就處理異常,如果找不到,就退出當前函數(shù)(釋放當前函數(shù)的內(nèi)存并撤銷局部對象),并且繼續(xù)在調(diào)用這個函數(shù)的函數(shù)中查找,釋放當前內(nèi)存并撤銷局部對象,這時會調(diào)用對象的析構(gòu)函數(shù),如果析構(gòu)函數(shù)拋出異常,將會調(diào)用標準庫terminate函數(shù),強制整個程序非正常退出,所以析構(gòu)函數(shù)應該從不拋出異常

異常的層次

異常的層次如下圖:

自定義異常處理類

C++標準中,定義在<stdexcept>中的任何異常類都派生自exception Class,本例也只是簡單地由exception繼承,在try段拋出一個異常并捕捉,代碼如下:

#include<exception> #include<iostream> using namespace std; //customized exception class 'myException': class myException:public exception { public: myException():exception("ERROR! Don't divide a number by integer zero./n"){ } //C++標準不建議這樣做 myException() { cout<<"error"<<endl; }}; //entry of the application: int main() { int x=100,y=0; try { if(y==0) throw myException(); else cout<<x/y; } catch(myException& me) { cout<<me.what(); //返回用來在拋出位置構(gòu)造異常對象的信息 //輸出error和std:exception } system("pause"); return 0; } //運行結(jié)果如下:ERROR! Don't divide a number by integer zero.
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黑山县| 阿图什市| 高州市| 肥乡县| 香格里拉县| 石景山区| 梁河县| 容城县| 南城县| 进贤县| 白朗县| 民勤县| 勐海县| 湄潭县| 浦北县| 梓潼县| 永泰县| 济宁市| 龙胜| 茌平县| 荥经县| 太仆寺旗| 花莲市| 兰溪市| 洛隆县| 新源县| 北辰区| 互助| 万宁市| 浏阳市| 上蔡县| 舒城县| 西峡县| 正宁县| 南宫市| 新泰市| 大邑县| 东光县| 肇州县| 丰城市| 常宁市|