看着一些代码,我偶然发现:
throw /*-->*/new std::exception ("//...
Run Code Online (Sandbox Code Playgroud)
我一直认为你不需要/你不应该new在这里使用.
什么是正确的方法,都可以,如果有的话有什么区别吗?
BTW从我所看到的同时"使用PowerShell提升库"的"grepping"永远不会使用throw new.
PS我也发现了一些使用的CLI代码throw gcnew.这可以吗?
我的测试人员遇到问题,我的应用程序在初始化时崩溃了.我添加了更多的日志记录和异常处理,但它仍然与通用的"此程序已停止工作"消息崩溃,而不是触发我的错误处理.
鉴于我的main()看起来像这样,并且catch(...)在什么情况下不会被触发?
try{
simed::CArmApp app(0, cmd);
for(bool done = false;!done;)
{
done = !app.frame();
}
} catch(const std::runtime_error &e){
handleApplicationError(e.what());
return -1;
} catch(...) {
handleApplicationError("Unknown Error");
return -999;
}
Run Code Online (Sandbox Code Playgroud)
我的代码正在调用一个执行OpenGL渲染的库,这是我认为出错的地方.