在 c++++ 中,異常通過 try-catch 語句處理:try 塊中代碼可能拋出異常。catch 塊捕獲標準異常或自定義異常。noexcept 關鍵字聲明函數不會拋出異常,以進行優化。
C++ 函數中如何處理異常?
在 C++ 中,異常通過 try-catch
語句處理,包括三個主要部分:
try { // 代碼塊,可能拋出異常 } catch (const std::exception& e) { // 捕獲標準異常 } catch (const MyCustomException& e) { // 捕獲自定義異常 }
登錄后復制
實戰案例:
假設我們有一個函數 divide
,它計算兩個數的商,但當分母為 0 時拋出異常:
int divide(int num, int denom) { try { if (denom == 0) { throw std::runtime_error("除數不能為 0"); } return num / denom; } catch (const std::exception& e) { std::cout << "錯誤: " << e.what() << std::endl; } }
登錄后復制
在主函數中,我們可以調用 divide
函數并捕獲異常:
int main() { try { int dividend = 10; int divisor = 0; int result = divide(dividend, divisor); std::cout << dividend << " / " << divisor << " = " << result << std::endl; } catch (const std::runtime_error& e) { std::cout << e.what() << std::endl; } }
登錄后復制
輸出:
錯誤: 除數不能為 0
登錄后復制
注意:
函數中也可以拋出自定義異常,通過創建自定義異常類并繼承 std::exception
。
使用 noexcept
關鍵字聲明函數不會拋出異常,以進行優化。