您好,登錄后才能下訂單哦!
這篇文章主要介紹C++常見異常處理原理是什么,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
編程中常見的錯誤
異常是指程序運行時出現的不正常,可分為一下幾類:
CPU異常;如在計算過程中,出現除數為0的情況。
內存異常,如:
設備異常,如:
用戶數據異常,如:
拋出異常(throw)、檢查異常(try塊)、捕獲異常(catch塊)
C++是根據類型區分不同異常的,因此在拋出異常時,throw表達式的值沒有實際意義,而表達式的類型則非常重要;如果程序中有多處要拋出的異常,應該用不同的表達式類型來相互區別。
關于throw的說明
檢測捕獲異常
一般形式:
try{ ....//檢測程序塊(可能拋出異常的代碼) } catch(異常說明符1){ ....//處理程序(當異常說明符1被拋出時執行的程序) } catch(異常說明符2){ ....//處理程序(當異常說明符2被拋出時執行的程序) } ..... //更多的catch
catch子句的形參列表
catch(類型名) //catch只需要了解異常的類型
catch(類型名 形參名) //catch需要了解異常類型之外的信息
catch(...) //捕獲所有異常
重拋異常
在catch子句中,可以再次拋出異常,其中throw不加表達式,表示將捕獲到的異常再次向上級函數拋出,不會被本函數的其他catch子句捕獲。
try{ throw "hello"; //拋出char* 異常 } catch(const char*){ //捕獲char*異常 throw; //重新拋出char* 異常至上一級函數 }
throw關鍵字修飾的函數
C++函數后面加關鍵字throw(something)限制,是對這個函數的異常安全作出限制;這是一種異常規范,只會出現在聲明函數時,表示這個函數可能拋出的異常類型。
void fun() throw(); //表示fun函數不允許拋出任何異常,即fun函數是異常安全的
void fun() throw(...); //表示fun函數可以拋出任何形式的異常
void fun() throw(exceptionType) //表示fun函數只能拋出exceptionType類型的異常
如void GetTag() throw(int);表示只能拋出int類型的異常,如果拋出非int類型的異常,則會調用unexsetpion()函數,退出程序。假如在函數聲明時用throw()限定(這個函數本身不可能拋出異常),則編譯器在決定其優化方式上更加靈活。
以上是C++常見異常處理原理是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。