C++ (14) 异常处理
生活随笔
收集整理的這篇文章主要介紹了
C++ (14) 异常处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
- 語法錯誤/編譯錯誤:比如關鍵字拼寫錯誤,變量名未定義,語句末尾缺少分好,括號不匹配,不能找到頭文件......
- 運行錯誤/:程序在運行過程中出現錯誤:例如除數為零,訪問地址非法,輸入數據有誤......
- 如果執行一個函數過程中出現異常,如果本函數沒有異常處理,就逐級向上拋出一個異常信息。最高一級也無法處理,最后異常終止程序執行。
- 異常處理中的三分部分:
- 檢查:try
- 拋出:throw
- 捕獲:catch
- 異常處理的形式:
- try-catch結構
- try
- ? ? {被檢查的語句或者函數}
- catch (異常信息類型 [變量名]) ?// 變量為可選,用來接受拋出的數據
- ? ? {進行異常處理的語句}
- throw語句:
- throw 數據; ?// 放在被檢查的語句或者函數中
- 注意:
- 被檢查的語句和函數必須放在try模塊中
- try 和 catch 作為一個整體出現,中間不能插入其他語句
- try 和 catch 模塊必須用花括號括起來
- 一個 try-catch 結構可以只有一個try模塊,單可以有多個catch模塊
- catch(...):代表捕獲類型未指定,它可以捕獲任何類型的異常信息
- “throw;” 表示"當前try語句不出了這個異常,請上級處理",例如
- try?
- {
- ? ? throw double(2.0);
- }
- catch (double)
- {
- ? ? throw;
- ? ? cout << "This sentence will not be printed out!" << endl;
- }
- 如果throw拋出的語句找不到與之匹配的catch模塊,那么系統就會調用terminate函數終止程序。
- try-catch結構
- 為了便于閱讀,在聲明函數時列出可能拋出的異常情況:
- double triangle(double, double, double) throw(double);
- double?triangle(double, double, double) throw(int, double, float, char); ?// 表示可以拋出四種類型的異常
- double triangle(double, double, double) throw(); ?// 聲明一個不拋出異常的函數,即使函數內有throw語句也不執行。
- 在執行try模塊過程中發生異常,成員會離開try模塊(如果try模塊中調用函數,則程序先離開該函數,回到try模塊),這樣流程就有可能離開該對象的作用于而轉到其他函數,因而應當事先做好結束對象前的清理工作。
?
轉載于:https://www.cnblogs.com/xumengpiaoyun/p/3554524.html
總結
以上是生活随笔為你收集整理的C++ (14) 异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vs2012 打开项目 自动关闭 并停止
- 下一篇: 关于指针的解释