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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.