前言
今天在開發(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í)常會碰到一些異常情況,例如:
這些異常情況,如果不能發(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í)可以不加處理,而只是“ 主站蜘蛛池模板: 永春县| 肥乡县| 福鼎市| 通化县| 自贡市| 炉霍县| 息烽县| 巧家县| 安丘市| 南和县| 肥西县| 平邑县| 旬阳县| 东海县| 延边| 天等县| 江川县| 万盛区| 柳林县| 务川| 东乌| 无锡市| 横峰县| 新郑市| 谢通门县| 富宁县| 凌源市| 古丈县| 宜兰县| 文山县| 和林格尔县| 台中县| 南和县| 河津市| 大新县| 衡东县| 沂南县| 巴楚县| 台山市| 金门县| 本溪市|