用于演示异常处理的 C++ 程序

假设有一个函数可以计算一些严重的复杂数学运算。但是在操作过程中,可能会出现一些异常。我们必须处理可能发生的不同类型的异常并执行以下操作。

  • 如果计算机无法为计算分配内存,我们必须打印“Memory Low!”

  • 如果发生任何其他与 C++ 相关的异常,我们必须打印 'Exception:' 然后是异常。

  • 如果发生其他事情,我们会打印“未处理的异常”。

我们得到一个包含一对值的数组,并将其传递给函数。如果发生任何异常,我们会处理它,否则,我们会打印输出值。

我们只需要处理异常,而不管产生异常的函数的机制。

因此,如果输入类似于 arr = {{361643035132, 2297873642249}, {-17, 15}};,那么输出将是 -

Memory Low!

Exception: val1 is negative

第一对值太大而无法处理,因此打印“内存不足”。第二对的第一个值为负。提供的函数无法使用它,因此它会生成/抛出异常“val1 为负”,

示例

让我们看看以下实现以获得更好的理解 -

#include <iostream>

#include <exception>

#include <string>

#include <stdexcept>

#include <vector>

#include <cmath>

using namespace std;

class Solution {

private:

   static int value;

public:

   static int foo(long long val1, long long val2) {

      value += 1;

      if(val1 < 0) {

         throw std::invalid_argument("val1 is negative");

      }

      vector<int> vectorList(val1, 0);

      int r = -1, c = sqrt(-1);

      if(val2 == 0) throw 0;

      r = (val1 / val2) * r;

      int ans = vectorList.at(val2);

      return r + val1 - val2 * ans;

   }

   static int getVal() {

      return value;

   }

};

int Solution::value = 0;

void solve(int t, long int values[][2]) {

   for (int i = 0; i < t; i++) {

      long long val1, val2;

      val1 = values[i][0];

      val2 = values[i][1];

      try {

         cout << Solution::foo(val1, val2) << '\n';

      }

      catch (const std::bad_alloc&) {

         cout << "Memory Low!\n";

      }

      catch (const std::exception& e) {

         cout << "Exception: " << e.what() << '\n';

      }

      catch (...) {

         cout << "Unhandled Exception\n";

      }

   }

}

int main() {

   long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};

   solve(2, arr);

}

输入

long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};

solve(2, arr);

输出结果
Memory Low!

Exception: val1 is negative

以上是 用于演示异常处理的 C++ 程序 的全部内容, 来源链接: utcz.com/z/327376.html

回到顶部