Supposons qu'il existe une fonction qui calcule des opérations mathématiques complexes. Cependant, quelques exceptions peuvent survenir lors de l'opération. Nous devons gérer les différents types d'exceptions qui peuvent survenir et procéder comme suit.
Nous avons un tableau contenant une paire de valeurs et le passons à une fonction. Si une exception se produit, nous la traitons, sinon nous imprimons la valeur.
Nous devons uniquement gérer les exceptions, quel que soit le mécanisme par lequel les fonctions génèrent des exceptions.
Donc, si l'entrée est arr = {{361643035132, 2297873642249}, {-17, 15}};, alors la sortie sera -
Memory Low! Exception: val1 is negative
La première paire de valeurs est trop grande à gérer, donc "Out de mémoire" est imprimé. La première valeur de la deuxième paire de valeurs est un nombre négatif. La fonction fournie ne peut pas le gérer, donc l'exception "val1 est négatif" est générée/lancée,
Pour résoudre ce problème, nous suivrons les étapes suivantes −
#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);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!