Updated:

less than 1 minute read

설명

  • 예외가 발생하여 중간에 함수를 빠져나가도 해당 예외를 처리할 수 있는 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