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

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

C++中try throw catch異常處理的用法示例

2020-01-26 13:24:02
字體:
供稿:網(wǎng)友

前言

今天在開發(fā)過程中調(diào)用一個庫函數(shù)結(jié)果庫函數(shù)有throw操作,當(dāng)前代碼沒有對throw進(jìn)行捕獲操作,導(dǎo)致進(jìn)程在main 函數(shù)中捕獲到異常導(dǎo)致進(jìn)程crash。所以借此記錄下c++關(guān)于try,throw,catch的用法。

程序運(yùn)行時(shí)常會碰到一些異常情況,例如:

  • 做除法的時(shí)候除數(shù)為 0;
  • 用戶輸入年齡時(shí)輸入了一個負(fù)數(shù);
  • 用 new 運(yùn)算符動態(tài)分配空間時(shí),空間不夠?qū)е聼o法分配;
  • 訪問數(shù)組元素時(shí),下標(biāo)越界;打開文件讀取時(shí),文件不存在。

這些異常情況,如果不能發(fā)現(xiàn)并加以處理,很可能會導(dǎo)致程序崩潰。

所謂“處理”,可以是給出錯誤提示信息,然后讓程序沿一條不會出錯的路徑繼續(xù)執(zhí)行;也可能是不得不結(jié)束程序,但在結(jié)束前做一些必要的工作,如將內(nèi)存中的數(shù)據(jù)寫入文件、關(guān)閉打開的文件、釋放動態(tài)分配的內(nèi)存空間等。

一發(fā)現(xiàn)異常情況就立即處理未必妥當(dāng),因?yàn)樵谝粋€函數(shù)執(zhí)行過程中發(fā)生的異常,在有的情況下由該函數(shù)的調(diào)用者決定如何處理更加合適。尤其像庫函數(shù)這類提供給程序員調(diào)用,用以完成與具體應(yīng)用無關(guān)的通用功能的函數(shù),執(zhí)行過程中貿(mào)然對異常進(jìn)行處理,未必符合調(diào)用它的程序的需要。

此外,將異常分散在各處進(jìn)行處理不利于代碼的維護(hù),尤其是對于在不同地方發(fā)生的同一種異常,都要編寫相同的處理代碼也是一種不必要的重復(fù)和冗余。如果能在發(fā)生各種異常時(shí)讓程序都執(zhí)行到同一個地方,這個地方能夠?qū)Ξ惓_M(jìn)行集中處理,則程序就會更容易編寫、維護(hù)。

鑒于上述原因,c++ 引入了異常處理機(jī)制。其基本思想是:函數(shù) A 在執(zhí)行過程中發(fā)現(xiàn)異常時(shí)可以不加處理,而只是“

主站蜘蛛池模板: 东阿县| 即墨市| 洮南市| 黄石市| 桐城市| 江津市| 汶川县| 德阳市| 铜山县| 甘德县| 汉阴县| 会泽县| 高碑店市| 凌云县| 建宁县| 嫩江县| 永济市| 岑巩县| 邢台县| 岳西县| 平武县| 耒阳市| 同心县| 四子王旗| 梓潼县| 阜阳市| 嘉义市| 双柏县| 南乐县| 东兴市| 瑞金市| 喀喇沁旗| 长治县| 昭通市| 晋中市| 吉安市| 郎溪县| 林口县| 武平县| 泰兴市| 略阳县|