在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
则输出自定义异常信息,否则输出标准异常信息。
通过自定义异常类,我们可以根据实际的需求定义不同类型的异常,提高程序的可维护性和可读性。在实际开发中,可以根据具体的业务逻辑和错误类型来自定义异常类,并合理地处理异常情况。