c++自定义继承错误类
时间: 2023-08-13 07:05:03 浏览: 46
在C++中,我们可以通过继承`std::exception`类来自定义异常类。`std::exception`是C++标准库中的一个基类,它包含了一个`what()`成员函数,用于返回异常的描述信息,因此我们可以通过继承`std::exception`类来实现自定义异常类,并在其中重载`what()`函数来返回异常信息。
下面是一个自定义异常类的示例代码:
```
#include <exception>
#include <string>
class MyException : public std::exception {
public:
MyException(const std::string& msg) : m_msg(msg) {}
virtual const char* what() const noexcept {
return m_msg.c_str();
}
private:
std::string m_msg;
};
```
在上面的代码中,我们定义了一个名为`MyException`的自定义异常类,它继承自`std::exception`类。在`MyException`类的构造函数中,我们传入一个`std::string`类型的参数`msg`,用于保存异常信息。在`MyException`类中,我们重载了`what()`函数,用于返回异常信息。在`what()`函数中,我们通过`c_str()`函数将`m_msg`字符串转换为C风格的字符串,并返回。
使用自定义异常类的示例代码:
```
#include <iostream>
void foo() {
throw MyException("Something bad happened.");
}
int main() {
try {
foo();
}
catch (std::exception& e) {
std::cout << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个名为`foo()`的函数,其中抛出了一个`MyException`类型的异常。在`main()`函数中,我们使用`try-catch`语句块捕获异常,并在`catch`语句块中输出异常信息。运行程序,输出结果如下:
```
Caught exception: Something bad happened.
```
可以看到,我们成功地捕获了自定义异常,并输出了异常信息。