




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 異常處置機制是對所能預料到的運轉錯誤進展處置的一套實現(xiàn)機制,針對這類問題,C提供了強大的異常處置機制。在程序設計時,應該充分利用這種機制,分析并處置各種能夠出現(xiàn)的異常情況,以提高程序的穩(wěn)定性和容錯才干。 在小型軟件系統(tǒng)中,一旦發(fā)生異常,普通是將程序立刻中斷運轉并進展內存釋放。 對于大型軟件來說,運轉中發(fā)生異常時應該具備恢復和繼續(xù)運轉的才干,恢復過程就是把產生異常所呵斥的影響去除,中間能夠會涉及一系列的函數(shù)調用鏈的退棧、對象的析構及資源的釋放等。但由于函數(shù)之間有著明確的分工和復雜的調用關系,發(fā)現(xiàn)錯誤的函數(shù)往往不具備處置錯誤的才干。這是它就引發(fā)一個異常,并經過拋擲的異常信息處置發(fā)生的錯誤。處置之
2、后,程序在緊接著異常處置的代碼區(qū)域中繼續(xù)執(zhí)行。在C中,異常是指從發(fā)生問題的代碼區(qū)域傳送四處置問題的代碼區(qū)域的一個對象,如以下圖所示: 異常處置的根本思想是:首先,實踐資源分配如內存懇求或翻開文件的操作通常在程序的低層中執(zhí)行,如上圖中的k函數(shù);其次。當無法分配內存或翻開文件時,將進展處置的操作通常放在高層中,中間還能夠包含與用戶會話的內容。 可見,異常為分配資源的代碼轉向處置錯誤的代碼提供了一種表達方式。假設還存在中間層次的函數(shù),如函數(shù)g,那么異常處置為它們釋放所分配的內存提供了時機。因此,C異常處置機制在異常發(fā)生時,盡能夠的減小了破壞并進展了縝密的善后任務,而不會影響到其他部分程序的正常運轉。
3、 try語句塊內為需求受維護的待檢測異常的函數(shù)序列,假設程序員預料某段程序代碼有能夠發(fā)生異常,就將它放在try語句塊內。當這段代碼運轉時真的發(fā)生異常時,其中的throw語句就會拋擲這個異常。 在try語句塊之后必需緊跟一個或多個catch語句塊,系統(tǒng)將根據(jù)throw拋出的異常類型依次檢查catch語句塊,當某個Catch語句塊中的異常聲明類型與拋擲異常的類型匹配時,該catch語句塊捕獲并處置這個異常。留意:每個catch語句后括號中的異常類型聲明中只能包容一個參數(shù)。異常,假設條件成立,那么拋擲異常。(5)程序中不應該出現(xiàn)異常類型一樣的catch語句塊,由于異常處置程序是按照它出現(xiàn)的次序被檢查
4、的。只需找到一個匹配的異常類型,后面的異常處置都將被忽略。 C+規(guī)范提供了一些規(guī)范異常,它們以基類exception開場,規(guī)范程序庫拋出的一切異常處置,都派生自該基類,如以下圖所示。該基類提供效力what,在每個派生類中重定義,發(fā)出相應的錯誤信息。bad_alloc:全局操作符new失敗bad_cast:動態(tài)類型轉換失敗bad_typeid:假設typeid的參數(shù)為零或空指針bad_exception:函數(shù)調用發(fā)生不測logic_error:程序中存在邏輯錯誤,或違反類的不變性。out_of_range:數(shù)組下標之類的數(shù)值超越了界定的范圍。Ios_base:failure:當數(shù)據(jù)流由于錯誤或由于到達文件尾部而發(fā)生形狀改動。range_error:計算時發(fā)生區(qū)間錯誤overflow_error:運算上溢錯誤underflow_error:運算下溢錯誤 要運用異常類需求包含相應的頭文件。其中: exception的bad_exception定義于中; bad_alloc定義于; bad_cast和bad_typeid定義于;iso_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 增資擴股入股協(xié)議
- 電子商務平臺運營銷售合作協(xié)議
- 股份制企業(yè)合同文書范例與解析
- 網絡直播行業(yè)版權使用許可協(xié)議
- 教育信息化產品采購安裝協(xié)議
- 經典個人手車轉讓合同
- 海洋資源開發(fā)項目合作框架協(xié)議
- 電子發(fā)票開具專項協(xié)議
- 粵教版高中信息技術必修教學設計:4.1編制計算機程序解決問題
- Unit 5 There is a big bed 單元整體(教學設計)-2024-2025學年人教PEP版英語五年級上冊
- (完整版)蘇教版六年級下數(shù)學比例重難點練習
- 熱能與動力工程測試技術- 流量測量
- 中國古代文學史 建安文學與正始文學
- 課堂嵌入式評價及其應用
- 高中物理課程標準
- 化工原理傳質導論
- 環(huán)境與可持續(xù)發(fā)展ppt課件(完整版)
- Linux操作系統(tǒng)課件(完整版)
- 跨境電商亞馬遜運營實務完整版ppt課件-整套課件-最全教學教程
- 中國傳媒大學《當代電視播音主持教程》課件
- 浙美版小學六年級美術下冊全冊精品必備教學課件
評論
0/150
提交評論