在我编写的应用程序中,我对大多数错误处理使用异常。我没有定义自己的异常类,只是还没有,我只是做了以下内容:抛出异常时应用程序崩溃
namespace Mage {
typedef std::exception Exception;
}
这样,我不会改变我的所有代码时,我以后定义自己的类型,应使用相同的接口。
也就是说,任何异常都会崩溃我的应用程序。考虑到上述定义,为什么会这样崩溃?
void Mage::Root::initialize(Mage::String& p_log) {
// initialize GLFW and GLEW.
if (!glfwInit()) {
throw new Mage::Exception("failed to initialize OpenGL");
return;
} else m_GLFWInitialized = true;
无论我是否删除或保留“新”,它仍会崩溃。我错过了什么吗?我已经看过教程,但这些并没有让我明白。
我也搭上了错误就在这里:
try {
MAGE_ROOT.initialize(Mage::String("Mage.log"));
} catch (Mage::Exception& e) {
std::cerr << e.what() << std::endl;
}
我得到的崩溃是:
Debug Error!
Program: ...sual Studio 2010\Project\Mage3D\Binaries\Debug\Test.exe
R6010
- abort() has been called
(Press Retry to debug application)
你如何看待你的例外? – 2013-04-26 12:43:35
我想,那个地方,*你抛出异常的地方也是相关的。通常在析构函数中抛出异常可能导致这样的错误。 – Spook 2013-04-26 12:44:36
你很喜欢捕捉异常,对吧? – 2013-04-26 12:44:50