c语言关于try和catch的问题


int* p = nullptr;
int main() {
    try {
        cout << *p;
    }
    catch (exception &p) {
        cout << p.what();
    }
    return 0;
}

为什么这样不能打印出错误呢

因为访问空指针触发的异常由操作系统发出,但是这个异常不是一个C++异常,一般C++程序捕捉不到这类异常。要在程序里捕捉这个异常,需要借助于编译器(比如MSVC /EHa选项)或操作系统API(比如Windows API, SetUnhandledExceptionFilter)

打印错误?题主想打印出什么错误?

希望对题主有所帮助,可以的话,帮忙点个采纳!