centos

CentOS下C++异常处理方式

小樊
41
2025-07-20 20:03:41
栏目: 编程语言

在CentOS下使用C++进行异常处理,主要依赖于C++的异常处理机制,即trycatchthrow关键字。以下是一些基本的异常处理方式和示例:

基本异常处理

  1. try块:用于包裹可能抛出异常的代码。
  2. catch块:用于捕获并处理异常。
  3. throw表达式:用于抛出异常。
#include <iostream>
#include <stdexcept>

int divide(int a, int b) {
    if (b == 0) {
        throw std::runtime_error("Division by zero");
    }
    return a / b;
}

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;
}

多重catch块

你可以使用多个catch块来捕获不同类型的异常。

#include <iostream>
#include <stdexcept>

int main() {
    try {
        // Some code that might throw exceptions
        throw std::runtime_error("Runtime error");
    } catch (const std::runtime_error& e) {
        std::cerr << "Runtime error caught: " << e.what() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "Standard exception caught: " << e.what() << std::endl;
    } catch (...) {
        std::cerr << "Unknown exception caught" << std::endl;
    }
    return 0;
}

自定义异常类

你可以创建自定义异常类来更好地描述特定类型的错误。

#include <iostream>
#include <stdexcept>

class MyException : public std::runtime_error {
public:
    explicit MyException(const std::string& message)
        : std::runtime_error(message) {}
};

int main() {
    try {
        throw MyException("This is a custom exception");
    } catch (const MyException& e) {
        std::cerr << "Custom exception caught: " << e.what() << std::endl;
    }
    return 0;
}

异常规范(Deprecated)

在C++11之前,可以使用异常规范(throw)来指定函数可能抛出的异常类型。然而,C++11及以后的版本已经弃用了这种做法,推荐使用noexcept关键字来指定函数是否可能抛出异常。

#include <iostream>
#include <stdexcept>

int safe_divide(int a, int b) noexcept {
    if (b == 0) {
        throw std::runtime_error("Division by zero");
    }
    return a / b;
}

int main() {
    try {
        int result = safe_divide(10, 0);
        std::cout << "Result: " << result << std::endl;
    } catch (const std::runtime_error& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }
    return 0;
}

总结

在CentOS下使用C++进行异常处理时,主要依赖于trycatchthrow关键字。你可以捕获不同类型的异常,创建自定义异常类,并使用noexcept关键字来指定函数是否可能抛出异常。这些机制可以帮助你更好地管理和处理程序中的错误。

0
看了该问题的人还看了