> 백엔드 개발 > C++ > 본문

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

WBOY
풀어 주다: 2023-09-05 16:53:05
앞으로
1230명이 탐색했습니다.

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

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

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

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

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

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

Memory Low!
Exception: val1 is negative
로그인 후 복사

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

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

  • i 초기화:= 0, i < i를 1만큼 늘리고 −
    • 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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿