创建CXIndex后无法捕获异常

时间:2013-12-10 15:16:41

标签: c++ exception visual-c++ visual-c++-2010 libclang

为什么这个程序

#include <clang-c/Index.h>
#include <exception>
#include <iostream>

int main() {
    try {
        throw std::exception("threw");
    } catch (const std::exception& e) {
        std::cout << e.what() << "\n";
    }
    CXIndex idx = clang_createIndex(0, 0);
    clang_disposeIndex(idx);
    return 0;
}

表现得如预期,但这一个

#include <clang-c/Index.h>
#include <exception>
#include <iostream>

int main() {
    CXIndex idx = clang_createIndex(0, 0);
    clang_disposeIndex(idx);
    try {
        throw std::exception("threw");
    } catch (const std::exception& e) {
        std::cout << e.what() << "\n";
    }
    return 0;
}

崩溃?

更一般地说,一个函数可以做什么导致后续异常不被捕获?

使用:visual c ++ 10.0(试过不同的/ EH标志),clang 3.4(用同样的方法构建)

0 个答案:

没有答案