<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      hwaityd的小窩

      Loading...

      異常處理

      異常處理是一種程序結構,它允許程序在發生錯誤時繼續執行,而不是立即終止。它由三個主要部分組成:try塊、throw語句和catch塊。

      1. 檢測try

      概念try塊是包圍可能拋出異常的代碼的語句塊。
      原理:編譯器會生成額外的代碼來檢測try塊中拋出的異常,并將其傳遞給匹配的catch塊。
      用法:使用try關鍵字來定義可能拋出異常的代碼塊。

      2. 拋出throw

      概念throw語句用于在發生錯誤時拋出一個異常。
      原理throw語句會導致立即退出當前的try塊,并開始搜索匹配的catch塊。
      用法:使用throw后跟異常對象來拋出異常。

      3. 捕獲catch

      概念catch塊用于捕獲并處理異常。
      原理:當異常被拋出時,程序會搜索匹配的catch塊來處理這個異常。
      用法:使用catch關鍵字后跟異常類型的參數來捕獲異常。

      4. C++標準異常:exception類

      概念:C++標準庫定義了一系列預定義的異常類,這些類都繼承自exception類。
      原理:這些異常類為常見的錯誤情況提供了標準的方式來拋出和捕獲異常。
      用法:可以直接使用這些異常類,也可以創建自定義異常類繼承自它們。

      5. 自定義異常類:

      概念:自定義異常類允許開發者定義自己的異常類型,以提供更具體的異常信息。
      原理:自定義異常類通常繼承自exception類,并可以添加額外的數據成員和方法。
      用法:定義一個繼承自exception的類,并在拋出異常時使用這個類的實例。

      完整案例代碼

      #include <iostream>
      #include <exception>
      
      using namespace std;
      
      // 自定義異常類
      class MyException : public exception {
      private:
          string message;
      public:
          MyException(const string& msg) : message(msg) {}
          
          // 覆蓋 what() 方法以提供異常信息
          virtual const char* what() const throw() {
              return message.c_str();
          }
      };
      
      // 函數可能會拋出異常
      void mightGoWrong(int value) {
          if (value < 0) {
              throw MyException("Negative value is not allowed");
          }
          cout << "Value is " << value << endl;
      }
      
      int main() {
          try {
              mightGoWrong(-1); // 這將拋出異常
          } catch (const MyException& e) {
              cout << "Caught an exception: " << e.what() << endl;
          } catch (const exception& e) {
              cout << "Caught a standard exception: " << e.what() << endl;
          }
          
          try {
              mightGoWrong(5); // 這將不會拋出異常
          } catch (const MyException& e) {
              cout << "Caught an exception: " << e.what() << endl;
          }
          
          return 0;
      }
      

      在這個案例中,我們定義了一個MyException類,它繼承自exception類,并覆蓋了what()方法以提供異常信息。mightGoWrong函數在接收到負數值時會拋出MyException。在main函數中,我們使用try-catch塊來捕獲并處理這些異常。如果mightGoWrong函數拋出了MyException,第一個catch塊將捕獲它并打印異常信息。如果拋出了其他類型的標準異常,第二個catch塊將捕獲并處理它。

      posted on 2024-10-20 01:06  hwaityd  閱讀(33)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 免费观看全黄做爰大片| 天天摸天天碰天天添| 国产欧美日韩免费看AⅤ视频| 粉嫩蜜臀av一区二区三区| 少妇伦子伦精品无吗| 好吊妞| 国产小视频一区二区三区| 国产成人精品亚洲午夜| 中文字幕国产精品资源| 静宁县| 色国产视频| 国产精品无码专区| 中文字幕日韩精品亚洲一区| 日本夜爽爽一区二区三区| 国产精品一区二区 尿失禁| 成在线人免费视频| 国产成人无码区免费内射一片色欲 | 久久亚洲av成人无码软件| 高清国产一区二区无遮挡| 国产精品国产三级国av| 亚洲国产在一区二区三区| 国产精品国产三级国快看| 一区二区三区四区激情视频| 男女啪祼交视频| 亚洲sm另类一区二区三区| 亚洲欧洲色图片网站| 色天使亚洲综合一区二区| 国产小受被做到哭咬床单GV| 国产 麻豆 日韩 欧美 久久| 久章草在线毛片视频播放| 日韩有码中文字幕av| 午夜福利日本一区二区无码| 伊人久久大香线蕉av五月天| 国产激情一区二区三区在线| 国产免费AV片在线看| 国产精品播放一区二区三区| 又大又粗欧美成人网站| 亚洲午夜精品久久久久久抢| 制服丝袜美腿一区二区| 亚州中文字幕一区二区| 国产自产一区二区三区视频 |