2012-11-05 24 views
4

我有一個醜陋的問題,並希望任何幫助!在Windows上我的程序崩潰異常被拋出任何時候都有,例如:異常導致崩潰(QT SDK 1.2.1 - Qt4.8.1,MinGW的,窗戶)

try 
{ 
    throw QString("lala"); 
} 
catch(QString &s) 
{ 
    ... 
} 

我使用Qt 4.8.1使用MinGW在QtCreator。我發現相當多的討論,並試圖

  • 重建與-exceptions
  • 加入QMAKE_CXXFLAGS + = -fexceptions

,但沒有改變的源代碼。 Windows告訴我該程序在我拋出錯誤的地方崩潰了。在Linux下一切正常。

不希望在所有討論的優點和使用異常的缺點,我不知道是否是使用Qt或MinGW和我能做些什麼來擺脫這個問題的問題。

+1

我不能重現此(MINGW克++ 4.6.2,QT 4.8.2),也見我的[SSCCE](https://github.com/afester/StackOverflow/tree/master/QtException)。你能提供更多的背景嗎?什麼選項正確地傳遞給g ++? –

+1

您使用的是MinGW的哪個版本?您是否構建了Qt庫,還是使用預構建的包? –

+1

我使用Qt與mingw tdm和異常工作。預編譯的Qt版本和常規的mingw之間如何處理異常是不兼容的。 「TDM-GCC的MinGW的/ TDM版提供的異常處理你的程序兩種不同的方法:SJLJ(的setjmp/longjmp的)和DW2(矮人-2)。」 – Jay

回答

0

沒有指定究竟是什麼「撞車」的意思,但如果你得到一個消息,像「應用程序已要求運行時退出以不尋常的方式」,這意味着你的異常得到了扔出去老遠沒有被任何東西所吸引。由於我相信特定的消息是由MSVC運行時生成的,因此mingw運行時可能會有不同的消息,其含義相同,或根本沒有消息。