C++求负数的平方根、除0均为数字类的异常,仿照标准异常处理类,将这类异常用MathException类定义,并举一个应用例子
时间: 2023-06-26 18:09:55 浏览: 112
举例说明自定义C++异常处理的实例
5星 · 资源好评率100%
可以定义一个MathException类来处理C++中负数的平方根和除以0都为数字类异常情况。该类可以继承自标准异常类std::exception,重载其what()方法,以便在抛出异常时提供错误信息。
以下是一个应用例子,演示如何使用MathException类处理负数平方根和除以0的异常:
```c++
#include <iostream>
#include <cmath>
#include <exception>
class MathException : public std::exception {
private:
std::string errorMsg;
public:
MathException(std::string msg) : errorMsg(msg) {}
const char* what() const noexcept override {
return errorMsg.c_str();
}
};
int main() {
double num, result;
std::cout << "Enter a number: ";
std::cin >> num;
try {
if (num < 0) {
throw MathException("Error: Cannot find square root of negative number!");
}
if (num == 0) {
throw MathException("Error: Division by zero!");
}
result = sqrt(num);
std::cout << "Square root of " << num << " is " << result << std::endl;
}
catch (MathException& e) {
std::cout << e.what() << std::endl;
}
return 0;
}
```
在这个例子中,用户输入一个数字,如果该数字小于0或等于0,则会抛出MathException类的异常。如果输入的数字是正数,则计算其平方根并输出。注意,捕获异常的语句是在try块内,如果抛出异常,则会跳转到catch块内执行。在catch块内,我们调用MathException类的what()方法返回异常信息,并打印到屏幕上。
阅读全文