在我編寫的應用程序中,我對大多數錯誤處理使用異常。我沒有定義自己的異常類,只是還沒有,我只是做了以下內容:拋出異常時應用程序崩潰
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