温馨提示×

C++异常处理机制的捕获方式

c++
小樊
81
2024-11-08 22:43:26
栏目: 编程语言

C++异常处理机制提供了两种主要的捕获方式:catch块和try-catch语句。以下是这两种方式的简要说明和示例:

  1. catch块:catch块用于捕获和处理特定类型的异常。它紧跟在try块之后,并指定要捕获的异常类型。当try块中的代码抛出异常时,程序会立即跳转到与该异常类型匹配的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