在C++中,異常處理是一種處理運(yùn)行時(shí)錯(cuò)誤的方法
throw
關(guān)鍵字用于引發(fā)(或拋出)異常。當(dāng)程序遇到無法處理的錯(cuò)誤或異常情況時(shí),可以使用throw
語句拋出一個(gè)異常對(duì)象。異常對(duì)象通常是一個(gè)包含錯(cuò)誤信息的類的實(shí)例。在C++中,標(biāo)準(zhǔn)異常類是從std::exception
類派生的。例如,拋出一個(gè)整數(shù)類型的異常:
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("Division by zero");
}
return a / b;
}
在這個(gè)例子中,當(dāng)除數(shù)為零時(shí),我們拋出一個(gè)std::runtime_error
異常,其中包含錯(cuò)誤信息。
catch
關(guān)鍵字用于捕獲和處理異常。在可能拋出異常的代碼塊之后,可以使用catch
語句來捕獲并處理異常。catch
語句通常與try
和throw
一起使用。例如,捕獲并處理上面示例中的異常:
int main() {
try {
int result = divide(10, 0);
std::cout << "Result: " << result << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
在這個(gè)例子中,我們使用try
塊包含可能拋出異常的代碼。如果divide
函數(shù)拋出一個(gè)異常,程序?qū)⒘⒓刺D(zhuǎn)到與該異常類型匹配的catch
塊。在這個(gè)catch
塊中,我們可以處理異常,例如輸出錯(cuò)誤信息。
總結(jié)一下,throw
用于拋出異常,而catch
用于捕獲和處理異常。通過使用這兩個(gè)關(guān)鍵字,我們可以編寫更健壯的C++程序,以處理運(yùn)行時(shí)錯(cuò)誤。