Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Stack Unwinding (gỡ ngăn xếp) trong C++


Stack unwinding là quá trình xóa các mục nhập ngăn xếp gọi hàm tại runtime. Khi ném ngoại lệ (exception) từ hàm nội bộ, các mục ngăn xếp bị xóa và trả về hàm gọi chính.

Ví dụ

#include <iostream>
using namespace std;

void function1() throw (int) {
    cout << "\n Entering into function 1";
    throw 100;
    cout << "\n Exiting function 1";
}

void function2() throw (int) {
    cout << "\n Entering into function 2";
    function1();
    cout << "\n Exiting function 2";
}

void function3() {
    cout << "\n Entering function 3 ";
    try {
        function2();
    } catch (int i) {
        cout << "\n Caught Exception: " << i;
    }
    cout << "\n Exiting function 3";
}

int main() {
    function3();
    return 0;
}

Kết quả

Entering function 3
Entering into function 2
Entering into function 1
Caught Exception: 100
Exiting function 3

Khi ngoại lệ xảy ra, thông tin ngăn xếp bị xóa và điều khiển trả về function3.