日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ (14) 异常处理

發布時間:2025/3/20 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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函數終止程序
  • 在函數聲明中進行異常情況指定
    • 為了便于閱讀,在聲明函數時列出可能拋出的異常情況:
      • 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模塊),這樣流程就有可能離開該對象的作用于而轉到其他函數,因而應當事先做好結束對象前的清理工作。
  • 舉例:
  • #include <strstream> #include <iostream> #include <stack> using namespace std;int main() {void f1();try{f1();}catch(double){cout << "OK0" << endl;}cout << "end0" << endl;return 0; }void f1() {void f2();try{f2();}catch(char){cout << "OK1" << endl;}cout << "end1" << endl; }void f2() {void f3();try{f3();}catch(int){cout << "OK2" << endl;}cout << "end2" << endl; }void f3() {double a = 0;try{throw a;}catch (float) // 結果OK0 end0 // catch (double) // OK3 end3 end2 end1 end0 {cout << "OK3" << endl; // throw; // 將a直接拋出,最后結果 OK3 OK0 end0 }cout << "end3" << endl; } View Code

    ?

  • 轉載于:https://www.cnblogs.com/xumengpiaoyun/p/3554524.html

    總結

    以上是生活随笔為你收集整理的C++ (14) 异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。