溫馨提示×

C++異常處理機制的捕獲方式

c++
小樊
81
2024-11-08 22:43:26
欄目: 編程語言

C++異常處理機制提供了兩種主要的捕獲方式:catch塊和try-catch語句。以下是這兩種方式的簡要說明和示例:

  1. catch塊:catch塊用于捕獲和處理特定類型的異常。它緊跟在try塊之后,并指定要捕獲的異常類型。當(dāng)try塊中的代碼拋出異常時,程序會立即跳轉(zhuǎn)到與該異常類型匹配的catch塊。

示例:

#include <iostream>
#include <stdexcept>

int main() {
    try {
        int denominator = 0;
        if (denominator == 0) {
            throw std::runtime_error("Division by zero");
        }
        int result = 10 / denominator;
        std::cout << "Result: " << result << std::endl;
    } catch (const std::runtime_error& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }
    return 0;
}
  1. try-catch語句:try-catch語句是一種更靈活的方式來捕獲和處理異常。它允許你在try塊中捕獲多種類型的異常,并在不同的catch塊中處理它們。此外,你還可以在一個catch塊中捕獲多種類型的異常,只需將它們放在一起即可。

示例:

#include <iostream>
#include <stdexcept>

int main() {
    try {
        int denominator = 0;
        if (denominator == 0) {
            throw std::runtime_error("Division by zero");
        }
        int result = 10 / denominator;
        std::cout << "Result: " << result << std::endl;
    } catch (const std::runtime_error& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "Unexpected error: " << e.what() << std::endl;
    } catch (...) {
        std::cerr << "Unknown error occurred" << std::endl;
    }
    return 0;
}

在這個示例中,我們捕獲了std::runtime_error類型的異常,并處理了它。我們還捕獲了所有其他類型的std::exception異常和一個通用的...異常,以便處理未知的異常情況。

0