轉帖|其它|編輯:郝浩|2012-08-09 00:50:09.000|閱讀 180 次
概述:在編寫程序時,常常會遇到一些異常情況需要進行處理,本文介紹了使用C++語言碰到了異常情況的解決方案。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在編寫程序時,常常會遇到一些異常情況需要進行處理,如果你在C++語言中碰到了異常情況是如何進行解決的呢?
1. C++異常類的編寫
#include<iostream>
#include<exception>
using namespacestd;
class DivideError:public exception //E從exception類派生而來
{
public:
const char* what() //必須實現虛函數,它在exception類中定義,
//函數原型是 virtual const char* what() const throw()
{
return "除數為0錯誤\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. 對try與catch的說明
程序員應該把可能出現異常的代碼段放入try { }中,因為當異常確實出現后,編譯器將找相應的catch(Exception& e )來捕獲在try { }的異常。用throw Exception()主動拋出異?;蚴窃趖ry{ }語句塊中出現異常的類型都必須與相應的catch(Exception& e)中異常類型一致,或者定義catch(…) { }語句塊,這表明編譯器若在本函數中找不到異常處理,則到catch(…) { }中按照相應的代碼去處理。如果這些都沒有,編譯器會返回上一級調用函數尋找匹配的catch,若一級一級往上找還是沒有結果,則系統調用terminate,terminate調用abort()終止整個程序。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網站整理