在C ++中处理被零除的异常

在本教程中,我们将讨论如何在C ++中处理“被零除”异常。

除以零是数学中未定义的实体,我们需要在编程时正确地进行处理,以免在用户端出错时返回。

使用runtime_error类

示例

#include <iostream>
#include <stdexcept>
using namespace std;
//处理零除
float Division(float num, float den){
   if (den == 0) {
      throw runtime_error("Math error: Attempted to divide by Zero\n");
   }
   return (num / den);
}
int main(){
   float numerator, denominator, result;
   numerator = 12.5;
   denominator = 0;
   try {
      result = Division(numerator, denominator);
      cout << "The quotient is " << result << endl;
   }
   catch (runtime_error& e) {
      cout << "Exception occurred" << endl << e.what();
   }
}

输出结果

Exception occurred
Math error: Attempted to divide by Zero

使用用户定义的异常处理

示例

#include <iostream>
#include <stdexcept>
using namespace std;
//用户定义的用于处理异常的类
class Exception : public runtime_error {
   public:
   Exception()
   : runtime_error("Math error: Attempted to divide by Zero\n") {
   }
};
float Division(float num, float den){
   if (den == 0)
   throw Exception();
   return (num / den);

}
int main(){
   float numerator, denominator, result;
   numerator = 12.5;
   denominator = 0;
   //尝试块调用除法功能
   try {
      result = Division(numerator, denominator);
      cout << "The quotient is " << result << endl;
   }
   catch (Exception& e) {
      cout << "Exception occurred" << endl << e.what();
   }
}

输出结果

Exception occurred
Math error: Attempted to divide by Zero

使用堆栈展开

示例

#include <iostream>
#include <stdexcept>
using namespace std;
//定义处理异常的功能
float CheckDenominator(float den){
   if (den == 0) {
      throw runtime_error("Math error: Attempted to divide by zero\n");
   }
   else
      return den;
}
float Division(float num, float den){
   return (num / CheckDenominator(den));
}
int main(){
   float numerator, denominator, result;
   numerator = 12.5;
   denominator = 0;
   try {
      result = Division(numerator, denominator);
      cout << "The quotient is " << result << endl;
   }
   catch (runtime_error& e) {
      cout << "Exception occurred" << endl << e.what();
   }
}

输出结果

Exception occurred
Math error: Attempted to divide by zero