日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52003
  • 待審:43
  • 小程序:12
  • 文章:1047590
  • 會員:762

c++++ 成員函數中錯誤處理機制有錯誤碼、斷言及異常機制。錯誤碼直接返回錯誤值;斷言檢查假設條件,不成立則拋出異常;異常捕獲嚴重錯誤,通過 try-catch 塊處理。實戰案例中,vector 類的 push_back() 函數在容量不足時拋出 std::bad_alloc 異常,使用者可通過 try-catch 捕獲并處理異常。

C++ 成員函數詳解:對象方法的錯誤處理與異常機制

C++ 中的對象方法(成員函數)對于處理復雜業務邏輯和錯誤條件至關重要。本篇文章將深入探討成員函數中錯誤處理和異常機制的用法,并提供實戰案例進行說明。

錯誤處理機制

錯誤碼

最直接的錯誤處理方法是使用錯誤碼。錯誤碼可以是整數或自定義枚舉值,表示特定錯誤條件。在成員函數中,可以通過設置 errno 變量來返回錯誤碼:

int MyFunction() {
  if (... /* 發生錯誤 */) {
    errno = EINVAL; // 設置錯誤碼為無效參數
    return -1; // 返回錯誤指示符
  }
  // ... 其它代碼
}

登錄后復制

斷言

斷言用于檢查程序中的假設條件。如果條件不成立,則拋出一個異常(稍后討論)。在成員函數中,可以使用 assert() 宏來實現斷言:

void MyOtherFunction() {
  assert(ptr != nullptr); // 檢查指針是否為 nullptr
  // ... 其它代碼
}

登錄后復制

異常機制

異常是處理嚴重錯誤條件的強大機制。異常可以將執行從發生錯誤的位置傳遞到指定的位置。在 C++ 中,異常的語法如下:

try {
  // 可能發生異常的代碼
} catch (exceptionType1& e) {
  // 處理 exceptionType1 類型異常
} catch (exceptionType2& e) {
  // 處理 exceptionType2 類型異常
} catch (...) {
  // 處理所有類型異常
}

登錄后復制

拋出異常

在成員函數中,可以通過使用 throw 關鍵字拋出異常。異常可以是標準庫中的 std::exception 及其子類,也可以是自定義異常類型:

void MyThrowingFunction() {
  if (... /* 發生嚴重錯誤 */) {
    throw std::runtime_error("嚴重錯誤!");
  }
  // ... 其它代碼
}

登錄后復制

捕獲異常

可以通過在成員函數的 try-catch 塊中捕獲異常。捕獲的異常對象可以通過引用傳遞給 catch 子句:

void MyCatchingFunction() {
  try {
    MyThrowingFunction();
  } catch (std::runtime_error& e) {
    // 處理 std::runtime_error 類型的異常
  } catch (...) {
    // 處理所有類型異常
  }
}

登錄后復制

實戰案例

假設有一個 Vector 類,其中包含一個成員函數 push_back(),該函數將元素添加到向量尾部。如果添加到向量的元素數量超過了預分配的容量,則 push_back() 函數應該拋出 std::bad_alloc 異常。

class Vector {
public:
  void push_back(int element) {
    try {
      // 嘗試添加元素
      // 如果容量不足,會拋出 std::bad_alloc 異常
      elements.push_back(element);
    } catch (std::bad_alloc& e) {
      // 捕獲并重新拋出 std::bad_alloc 異常
      throw;
    }
  }

private:
  std::vector<int> elements; // 使用標準庫的 std::vector 作為底層存儲
};

登錄后復制

在使用 Vector 類時,可以如下方式捕獲 push_back() 函數拋出的異常:

int main() {
  Vector v;
  try {
    // 嘗試向向量添加過多元素,導致容量不足
    for (int i = 0; i < 1000000; i++) {
      v.push_back(i);
    }
  } catch (std::bad_alloc& e) {
    // 捕獲 std::bad_alloc 異常并處理
    std::cout << "錯誤:容量不足!" << std::endl;
    return 1;
  }
  return 0;
}

登錄后復制

分享到:
標簽:C++ 異常處理 成員函數 標準庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52003

    網站

  • 12

    小程序

  • 1047590

    文章

  • 762

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定