C++自定义一种异常类
时间: 2024-01-25 22:27:42 浏览: 34
当我们需要在C++中处理特定类型的错误时,可以自定义异常类来表示这些错误。在C++中,自定义异常类通常是通过继承标准异常类std::exception来实现的。
下面是一个示例代码,展示了如何自定义一个名为MyException的异常类:
```cpp
#include <exception>
#include <string>
class MyException : public std::exception {
public:
MyException(const std::string& errorMessage) : errorMessage(errorMessage) {}
const char* what() const noexcept override {
return errorMessage.c_str();
}
private:
std::string errorMessage;
};
```
在这个示例中,我们定义了一个名为MyException的异常类,它继承自std::exception类。我们通过构造函数接受一个字符串参数,用于设置异常的错误信息。在what()方法中,我们重写了std::exception类的what()方法,以便返回我们自定义的错误信息。
我们可以在程序中使用这个自定义的异常类,例如:
```cpp
#include <iostream>
void divide(int dividend, int divisor) {
if (divisor == 0) {
throw MyException("Divisor cannot be zero!");
}
std::cout << "Result: " << dividend / divisor << std::endl;
}
int main() {
try {
divide(10, 0);
} catch (const MyException& e) {
std::cerr << "Exception caught: " << e.what() << std::endl;
}
return 0;
}
```
在上述示例中,我们定义了一个divide()函数,用于进行整数相除操作。如果除数为零,我们就抛出一个MyException类型的异常。在main()函数中,我们使用try-catch块来捕获并处理这个异常。如果捕获到异常,我们会输出异常的错误信息。
这样,我们就可以根据需要自定义各种类型的异常类来表示特定的错误情况,并在程序中进行相应的处理。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)