
假设有一个函数用于计算一些复杂的数学运算。但在运算过程中,可能会发生一些异常。我们必须处理可能发生的不同类型的异常,并执行以下操作。
我们有一个包含一对值的数组,并将其传递给函数。如果发生任何异常,我们处理它,否则打印输出值。
我们只需要处理异常,而不考虑函数生成异常的机制。
因此,如果输入是arr = {{361643035132, 2297873642249}, {-17, 15}};,那么输出将是-
立即学习“C++免费学习笔记(深入)”;
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++程序示例,展示异常处理的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号