noexcept修饰的函数无法被catch到(只会崩溃)

  • 由于createTest函数是被noexcept修饰的,但是createTest又抛出了异常,这是catch不到的
class Test {
    vector<int> vec;
public :
    Test(int siz) : vec(siz) {
        printf("siz: %d\n", siz); fflush(stdout);
    }
};

void createTest() noexcept {  // 重点1: 注意noexcept
    Test t(-1);
}

int main()
{
    try {
        createTest(); // 重点2: 这里直接会调用std::abort()结束程序
    } catch(...) {
        printf("catch createTest()\n"); fflush(stdout); // 重点3: 这里不会执行到
    }
    return 0;
}



posted @ 2025-11-19 17:24  马角的逆袭  阅读(6)  评论(0)    收藏  举报