gpt4 book ai didi

c++ - std::exception 没有被捕获?

转载 作者:行者123 更新时间:2023-11-30 02:01:48 25 4
gpt4 key购买 nike

对 glewInit() 的调用失败(根据记录,我没有任何答案,但是......)并且它抛出异常。

不幸的是,它没有被我的任何捕获物捕获,甚至没有 (...)。

我做错了什么?

try {

// Initialize GLEW
if (glewInit() != GLEW_OK)
throw std::exception("Failed to initialize GLEW\n");


} catch ( std::system_error const& err) {
fprintf(stdout, "System Error: %s", err.what());
glfwTerminate(); // Free glfw if it has been allocated
// Try Again
this->InitWithSize(_width, _height);
} catch( std::exception const& err) {
fprintf(stdout, "Exception Found: %s", err.what());
} catch ( ... ) {
fprintf(stdout,"Unknown Exception Occured\n");
}

最佳答案

"What am I doing wrong?"

嗯,关于所谓的异常没有出现,我没有提出任何假设。

但是这里有些地方你做错了:

  • 将字符串传递给 std::exception 构造函数。那是一个非标准的扩展; std::exception没有采用字符串参数的构造函数。如果要传递异常文本,请使用 std::runtime_error

  • 在可能的抛出之后没有正常的语句意味着您不能确定异常是否被抛出。

  • 在异常消息中有一个换行符。非常有问题的约定。来自其他来源的异常不会有最后的换行符。

  • stdout 上报告错误。为此使用 stderr。这就是它的用途。

  • 释放 catch 子句中的资源。一般来说,会造成严重的困惑。不要,为此使用析构函数。

关于c++ - std::exception 没有被捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com