在我正在编写的应用程序中,我在大部分错误处理中都使用了异常。我还没有定义我自己的异常类,我只是做了以下事情:
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)