>백엔드 개발 >C++ >예외 처리를 보여주는 C++ 프로그램 예

예외 처리를 보여주는 C++ 프로그램 예

WBOY
WBOY앞으로
2023-09-05 16:53:051268검색

예외 처리를 보여주는 C++ 프로그램 예

복잡한 수학 연산을 계산하는 함수가 있다고 가정해 보세요. 그러나 작업 중에 일부 예외가 발생할 수 있습니다. 발생할 수 있는 다양한 유형의 예외를 처리하고 다음을 수행해야 합니다.

  • 컴퓨터가 계산을 위해 메모리를 할당할 수 없으면 "메모리 부족!"을 인쇄해야 합니다.
  • 다른 C++ 관련 예외가 발생하면 "예외:"를 인쇄하고 이어서 예외 메시지를 인쇄해야 합니다.
  • 다른 일이 발생하면 "처리되지 않은 예외"가 인쇄됩니다.

한 쌍의 값을 포함하는 배열이 있고 이를 함수에 전달합니다. 예외가 발생하면 이를 처리하고, 그렇지 않으면 값을 인쇄합니다.

함수가 예외를 생성하는 메커니즘에 관계없이 예외만 처리하면 됩니다.

입력이 arr = {{361643035132, 2297873642249}, {-17, 15}};이면 출력은 -

Memory Low!
Exception: val1 is negative

값의 첫 번째 쌍이 너무 커서 처리할 수 없으므로 "Out of Memory'가 인쇄됩니다. 두 번째 값 쌍의 첫 번째 값은 음수입니다. 제공된 함수가 이를 처리할 수 없으므로 "val1 is negative" 예외가 생성/발생합니다.

이 문제를 해결하려면 다음 단계를 따르세요. −

  • i 초기화:= 0, i
  • val1 :=values[i, 0]
  • val2 :=value[i, 1]
  • try,
    • print (foo(val1, val2))
  • if를 실행합니다. 메모리를 할당할 수 없습니다(bad_alloc 예외 발생).
    • "메모리 부족!"을 인쇄합니다.
  • 그렇지 않고 다른 표준 C++ 예외가 발견되면
    • "예외:"를 인쇄합니다.
    • 예외 세부 정보를 인쇄합니다. +
    • #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) << &#39;\n&#39;;
            }
            catch (const std::bad_alloc&) {
               cout << "Memory Low!\n";
            }
            catch (const std::exception& e) {
               cout << "Exception: " << e.what() << &#39;\n&#39;;
            }
            catch (...) {
               cout << "Unhandled Exception\n";
            }
         }
      }
      int main() {
         long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};
         solve(2, arr);
      }
    output
  • long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};
    solve(2, arr);

위 내용은 예외 처리를 보여주는 C++ 프로그램 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제