C++異常處理機(jī)制中的throw和catch

c++
小樊
82
2024-11-08 22:44:25
欄目: 編程語言

在C++中,異常處理是一種處理運(yùn)行時(shí)錯(cuò)誤的方法

  1. throw: 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ò)誤信息。

  1. catch: catch關(guān)鍵字用于捕獲和處理異常。在可能拋出異常的代碼塊之后,可以使用catch語句來捕獲并處理異常。catch語句通常與trythrow一起使用。

例如,捕獲并處理上面示例中的異常:

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ò)誤。

0