2012-11-05 26 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运行时可能会有不同的消息,其含义相同,或根本没有消息。