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