최대 1 분 소요

설명

  • 예외가 발생하여 중간에 함수를 빠져나가도 해당 예외를 처리할 수 있는 catch 문을 만나면 그 사이의 있는 스택 정보가 자동으로 순서대로 정리


예제

  • 코드
    • #include <iostream>
      #include <string>
      
      using namespace std;
      
      class AAA {
          private:
              const string strName;
      
          public:
              AAA(const string& strName) : strName(strName) {
                  cout << "AAA() call - " << this->strName << endl;
              }
              ~AAA() { cout << "~AAA() call  - " << this->strName << endl; }
      };
      
      void func1();
      void func2();
      void func3();
      
      void func1() {
          AAA aaa("func1");
      
          func2();
      }
      
      void func2() {
          AAA aaa("func2");
      
          func3();
      }
      
      void func3() {
          AAA aaa("func3");
      
          throw 10;
      }
      
      int main() {
          try {
              func1();
          } catch (int& iEx) {
              cout << "main catch int" << endl;
          }
      
          return 0;
      }
      
  • 실행 결과
    • AAA() call - func1
      AAA() call - func2
      AAA() call - func3
      ~AAA() call  - func3
      ~AAA() call  - func2
      ~AAA() call  - func1
      main catch int