轉(zhuǎn)帖|其它|編輯:郝浩|2012-08-09 00:50:09.000|閱讀 180 次
概述:在編寫(xiě)程序時(shí),常常會(huì)遇到一些異常情況需要進(jìn)行處理,本文介紹了使用C++語(yǔ)言碰到了異常情況的解決方案。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
在編寫(xiě)程序時(shí),常常會(huì)遇到一些異常情況需要進(jìn)行處理,如果你在C++語(yǔ)言中碰到了異常情況是如何進(jìn)行解決的呢?
1. C++異常類(lèi)的編寫(xiě)
#include<iostream>
#include<exception>
using namespacestd;
class DivideError:public exception //E從exception類(lèi)派生而來(lái)
{
public:
const char* what() //必須實(shí)現(xiàn)虛函數(shù),它在exception類(lèi)中定義,
//函數(shù)原型是 virtual const char* what() const throw()
{
return "除數(shù)為0錯(cuò)誤\n";
}
};
double divide(doublex,double y)
{
if(y==0) throw DivideError(); //拋出異常
else return x/y;
}
void main()
{
double x,y;
double res;
try
{
cin>>x>>y;
res=divide(x,y);
cout<<res<<endl;
}
catch(DivideError& e)
{
cerr<<e.what();
}
}
2. 對(duì)try與catch的說(shuō)明
程序員應(yīng)該把可能出現(xiàn)異常的代碼段放入try { }中,因?yàn)楫?dāng)異常確實(shí)出現(xiàn)后,編譯器將找相應(yīng)的catch(Exception& e )來(lái)捕獲在try { }的異常。用throw Exception()主動(dòng)拋出異常或是在try{ }語(yǔ)句塊中出現(xiàn)異常的類(lèi)型都必須與相應(yīng)的catch(Exception& e)中異常類(lèi)型一致,或者定義catch(…) { }語(yǔ)句塊,這表明編譯器若在本函數(shù)中找不到異常處理,則到catch(…) { }中按照相應(yīng)的代碼去處理。如果這些都沒(méi)有,編譯器會(huì)返回上一級(jí)調(diào)用函數(shù)尋找匹配的catch,若一級(jí)一級(jí)往上找還是沒(méi)有結(jié)果,則系統(tǒng)調(diào)用terminate,terminate調(diào)用abort()終止整個(gè)程序。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)站整理