在C++中,異常處理機制主要通過try
、catch
和throw
這三個關(guān)鍵字來實現(xiàn)。下面是一個簡單的例子,展示了如何使用這些關(guān)鍵字來處理異常:
#include <iostream>
#include <stdexcept>
int main() {
int num1 = 10;
int num2 = 0;
int result = 0;
try {
// 嘗試執(zhí)行可能會拋出異常的代碼
if (num2 == 0) {
throw std::runtime_error("除數(shù)不能為0");
}
result = num1 / num2;
} catch (const std::runtime_error& e) {
// 捕獲并處理特定類型的異常
std::cerr << "捕獲到運行時錯誤: " << e.what() << std::endl;
} catch (...) {
// 捕獲所有類型的異常
std::cerr << "捕獲到未知異常" << std::endl;
}
std::cout << "結(jié)果是: " << result << std::endl;
return 0;
}
在這個例子中,我們嘗試執(zhí)行一個除法操作,但是除數(shù)為0,這會導(dǎo)致一個運行時錯誤。我們使用try
塊來包裹可能會拋出異常的代碼。如果try
塊中的代碼拋出了異常,程序會立即跳轉(zhuǎn)到相應(yīng)的catch
塊中處理異常。
我們使用了兩個catch
塊來處理異常。第一個catch
塊捕獲并處理特定類型的異常,即std::runtime_error
。第二個catch
塊捕獲所有類型的異常,即...
。這樣可以確保程序不會因為未處理的異常而意外終止。
在catch
塊中,我們可以使用e.what()
方法來獲取異常的描述信息,并將其輸出到控制臺或者其他地方進行處理。
需要注意的是,我們在catch
塊中并沒有重新拋出異常,因為在這個例子中,我們只是想要處理異常,而不是將異常繼續(xù)向上傳遞。如果你需要在catch
塊中重新拋出異常,可以使用throw;
語句來實現(xiàn)。