1
class ScopedShit
{
public:
ScopedShit() {
cout << "ScopedShit()" << endl;
}
~ScopedShit() {
cout << "~ScopedShit()" << endl;
}
};
void foo()
{
ScopedShit ss;
int x = 0;
int y = 5/x;
}
int main()
{
__try {
foo();
}
__except(true) {
cout << "Continuing..." << endl;
}
}
ScopedShit()
繼續...
我讀這篇文章http://www.codeproject.com/Articles/2126/How-a-C-compiler-implements-exception-handling這解釋:
但在它(異常處理程序)調用catch塊(它知道從funcinfo結構中捕獲 塊的地址,參見圖4)之前,它必須執行堆棧 展開:清除低於此的函數的堆棧幀 函數的框架。清理堆棧框架涉及到很好的 錯綜複雜:異常處理程序必須找到所有本地對象 函數在異常時處於活動狀態,並調用 它們的析構函數。
我錯過了什麼嗎?
非常感謝! – prgDevelop