복잡한 수학 연산을 계산하는 함수가 있다고 가정해 보세요. 그러나 작업 중에 일부 예외가 발생할 수 있습니다. 발생할 수 있는 다양한 유형의 예외를 처리하고 다음을 수행해야 합니다.
한 쌍의 값을 포함하는 배열이 있고 이를 함수에 전달합니다. 예외가 발생하면 이를 처리하고, 그렇지 않으면 값을 인쇄합니다.
함수가 예외를 생성하는 메커니즘에 관계없이 예외만 처리하면 됩니다.
입력이 arr = {{361643035132, 2297873642249}, {-17, 15}};이면 출력은 -
Memory Low! Exception: val1 is negative
값의 첫 번째 쌍이 너무 커서 처리할 수 없으므로 "Out of Memory'가 인쇄됩니다. 두 번째 값 쌍의 첫 번째 값은 음수입니다. 제공된 함수가 이를 처리할 수 없으므로 "val1 is negative" 예외가 생성/발생합니다.
이 문제를 해결하려면 다음 단계를 따르세요. −
#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);
위 내용은 예외 처리를 보여주는 C++ 프로그램 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!