c++異常類,C++基礎知識(八)例外、異常處理

 2023-11-19 阅读 21 评论 0

摘要:???? 對java熟悉的朋友們都很清楚,java中的異常處理機制是非常完善的。并且java強制使用異常處理,用戶必須對有可能出現異常的情況進行處理。在c++中并沒有強制用戶使用異常處理,但是使用異常處理將會使您的程序更加的健壯。 ???? 在c++

???? 對java熟悉的朋友們都很清楚,java中的異常處理機制是非常完善的。并且java強制使用異常處理,用戶必須對有可能出現異常的情況進行處理。在c++中并沒有強制用戶使用異常處理,但是使用異常處理將會使您的程序更加的健壯。

???? 在c++中,一個函數在執行的過程中可以識別異常(例外),并通告異常的發生。這種通告機制稱為拋出異常,使用關鍵字throw。異常拋出后,可以由函數的調用者進行捕捉并進行處理,使用關鍵字catch。我們一般將可能會拋出異常的程序塊放到try語句塊中去執行,以便用catch來進行捕捉。個人感覺c++中異常處理的這一套和java非常相似,都是try{......}catch(..){......}這種結構。下面看一個例子:

try
{f();//f() may throw some exception
}
catch(int a)
{......
}
catch(char b)
{......
}


try程序塊可能會拋出異常,由catch程序塊來進行捕捉。catch塊之間的順序可以任意,但是必須位于try之后,另外catch塊會將拋出的異常的類型與自己要捕捉的異常類型進行對比,如果匹配則進行捕捉。

???? 舉一個具體的例子:
     while(true){cout << "please enter the index and length to erase:"<<endl;cin >>index>>length;try{str.erase(index,length);}catch(out_of_range){continue;}break;}



如果輸入的index大于字符串的長度將會引發一個異常out_of_range,即數組下標越界,這時異常就會被catch語句塊捕捉到并進行處理。

???? 下面用一個例子演示如何拋出異常:

const int MaxSize = 1000;
float arr[MaxSize];
enum out_of_bounds{underflow,overflow};float& access(int i)
{if(i<0){throw underflow;}if(i>=MaxSize){throw overflow;}
}try
{......val = access(k)
}
catch(out_of_bounds t)
{if(t==overflow){cerr<<"overflow"<<endl;exit(EXIT_FAILURE);}if(t==underflow){cerr<<"underflow"<<endl;exit(EXIT_FAILURE);}
}

c++異常類,
由try語句塊拋出異常,catch語句塊進行捕捉后進行分析是什么異常,然后進行處理。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/183672.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息