【发布时间】:2017-12-14 02:59:30
【问题描述】:
我写了以下程序:
// Example program
#include <iostream>
#include <string>
#include <exception>
struct A {
A() {
std::cout << "A ctor" << std::endl;
}
~A() {
std::cout << "A dtor" << std::endl;
try {
throw std::exception();
} catch (std::exception &e) {
std::cout << "Internal exception caught" << std::endl;
}
}
};
int main()
{
try {
A a;
throw std::exception();
} catch (std::exception &e) {
std::cout << "External exception caught" << std::endl;
}
}
我预期的输出是:
A ctor
A dtor
Internal exception caught
External exception caught
这就是我在 GCC 中得到的。但是当我使用 Visual Studio(2013 版)时,我得到的输出是:
A ctor
External exception caught
这是怎么回事?
【问题讨论】:
-
“这是怎么回事?” - MS 编译器设计团队犯了一个错误:P
标签: c++ visual-studio exception-handling language-lawyer destructor