在C++中,异常处理机制允许程序在运行时发生错误时抛出异常,并且可以通过捕获和处理异常来处理这些错误,从而提高程序的可靠性和健壮性。除了C++标准库中提供的异常类之外,我们也可以自定义异常类来实现自己的异常处理需求。

下面是一个简单的例子来演示如何自定义异常类:

#include <iostream>
#include <exception>

// 自定义异常类
class MyException : public std::exception {
public:
    const char* what() const noexcept override {
        return "My custom exception";
    }
};

int divide(int a, int b) {
    if (b == 0) {
        throw MyException();
    }
    return a / b;
}

int main() {
    try {
        int result = divide(10, 0);
        std::cout << "Result: " << result << std::endl;
    } catch (MyException& e) {
        std::cerr << "Exception caught: " << e.what() << std::endl;
    } catch (std::exception& e) {
        std::cerr << "Standard exception caught: " << e.what() << std::endl;
    }

    return 0;
}

在上面的例子中,我们定义了一个自定义的异常类MyException,它继承自std::exception类,并且重写了what()方法来返回异常的描述信息。在divide()函数中,我们检查除数是否为0,如果为0则抛出MyException异常。在main()函数中,我们使用try-catch块来捕获可能抛出的异常,如果捕获到MyException则输出自定义异常信息,否则输出标准异常信息。

通过自定义异常类,我们可以根据实际的需求定义不同类型的异常,提高程序的可维护性和可读性。在实际开发中,可以根据具体的业务逻辑和错误类型来自定义异常类,并合理地处理异常情况。