throw funktioniert nicht richtig

Gast #3453184
Lesenswert?

Hallo Leute,

ich programmiere gerade ein Programm in C++ auf dem PC. Benutze dazu 
eclipse CDT.
In meinem Programm benutze ich exception handling, was aber aufgehört 
hat zu funktionieren. Selbst wenn ich ein einfaches Programm wie:
1
#include <iostream>
2
using namespace std;
3

4
int main(int argc, char *argv[]) {
5
  try {
6
    throw 20;
7
  } catch (int e) {
8
    cout << "An exception occurred. Exception Nr. " << e << '\n';
9
    cout.flush();
10
  }
11
  return 0;
12
}

schreibe, fängt er die exception nicht und ich bekomme auf cerr die 
Ausgabe:
This application has requested the Runtime to terminate it in an unusual 
way.
Please contact the application's support team for more information.

Wenn ich ein neues Projekt erstelle, dann funktioniert es alles 
Einwandfrei. Woran kann es liegen, dass es im einen Projekt funktioniert 
und im anderen nicht?

Gruß, Yaro
#3453206
Lesenswert?

Funktioniert bei mir einwandfrei mit:

1.) IDE:
Eclipse IDE for C/C++ Developers

Version: Kepler Service Release 1
Build id: 20130919-0819

2.) Compiler:
g++ (GCC) 3.4.5 (mingw-vista special r3)

Habe dafür ein neues, leeres "C++ Project" im Workspace angelegt, MinGW 
als Compiler gewählt, eine neue leere Sourcecode-Datei hinzugefügt und 
so weiter.

Die Ausgabe ist:
An exception occurred. Exception Nr. 20

und zwar sowohl innerhalb von Eclipse, als auch von der Kommandozeile 
aus gestartet.

Eventuell mal ohne eclipse probieren, einfach an der Kommandozeile den 
Code kompilieren und ausführen? Wenn das funktioniert: Compiler/Linker 
ist okay, der Fehler muss in Eclipse liegen. Wenn das nicht tut: Dann 
stimmt anscheinend schon etwas mit der Compiler/Linker Installation 
nicht.

Ach so, Du schreibst ja dass es in einem neu angelegten Projekt 
funktioniert. Was genau ist dann das Problem, tritt der Fehler nach 
einer Weile immer wieder auf?
Gast #3453261
Lesenswert?

-fexceptions hat nicht geholfen, aber die Richtung stimmt!

Hab mit -v alles ausgeben lasen und folgendes gefunden:

Target: mingw32
Configured with: ../gcc-4.8.1/configure --prefix=/mingw --host=mingw32 
--build=mingw32 --without-pic --enable-shared --enable-static 
--with-gnu-ld --enable-lto --enable-libssp --disable-multilib 
--enable-languages=c,c++,fortran,objc,obj-c++,ada 
--disable-sjlj-exceptions --with-dwarf2 --disable-win32-registry 
--enable-libstdcxx-debug --enable-version-specific-runtime-libs 
--with-gmp=/usr/src/pkg/gmp-5.1.2-1-mingw32-src/bld 
--with-mpc=/usr/src/pkg/mpc-1.0.1-1-mingw32-src/bld --with-mpfr= 
--with-system-zlib --with-gnu-as --enable-decimal-float=yes 
--enable-libgomp --enable-threads --with-libiconv-prefix=/mingw32 
--with-libintl-prefix=/mingw

Insbesondere hervorzuheben: --disable-sjlj-exceptions

Weis jemand, wie ich das wegbekomme?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren