Verwirrung: Exception und Abort
-
Hi!
Warum endet folgendes mit einem Abort trap?
try { throw 1; } catch( ... ) { printf("catched"); }Danke!
-
hi
den fehler kann ich nicht reproduzieren(der msvc9 verhält sich hier korrekt)...
welchen compiler nutzt du?bb
-
Wahrscheinlich hast du für stdout die Grammatikprüfung aktiviert.
-
Ich benutze g++ 4.2 auf Mac OS X 10.6.
-
Bashar schrieb:
Wahrscheinlich hast du für stdout die Grammatikprüfung aktiviert.

-
Bashar schrieb:
Wahrscheinlich hast du für stdout die Grammatikprüfung aktiviert.
xD
-
Bashar schrieb:
Wahrscheinlich hast du für stdout die Grammatikprüfung aktiviert.
Nein, habe ich nicht.
-
Fail

Ein Tipp: Simple past von "catch" ist nicht "catched"
-

Aber wieder zurück zum Problem ja?
-
nielsp schrieb:

Aber wieder zurück zum Problem ja?Erst wenn das vorrangige Problem repariert ist. So kann sich ja kein Mensch konzentrieren.
-
try { throw 1; } catch( ... ) { printf("catch"); }Besser so??
-
try { throw 1; } catch(...) { std::cout << "caught"; };P
-
So ein Müll. Ich hatte doch tatsächlich gehofft, ernsthafte Antworten vorzufünden.
Jetzt scheiß ich halt auf Exceptions
-
Die "ernsthafte" Lösung ist bereits in den gegebenen Antworten enthalten (bzw. in dem Fakt, dass sie die Frage scheinbar nicht beantworten).
-
Der Fehler muß woanders liegen. Hast Du da mehr Code drin, wirfst zum Beispiel in einem Destruktor noch eine Exception?
-
Nichts außer int main().
int main(int argc, char** argv) { try { throw 1; } catch(...) { std::cout << "caught\n"; return 0; } std::cout << "not caught\n" << std::endl; return 0; }
-
nielsp schrieb:
Nein, nichts. Lediglich int main():
int main(int argc, char** argv) { try { throw 1; } catch( ... ) { return 0; } return -1; }Habs soeben bei mir compiliert und gestetet und der Proess gibt einfach nur 0 zurück.
-
Wie ja gewollt. Aber bei kommt halt abort raus.
-
nielsp schrieb:
Wie ja gewollt. Aber bei kommt halt abort raus.
und wir sollen jz raten, was du falsch machst? ><
ich denke, da wärst du im compiler und ide forum besser aufgehoben
vll gibts irgendwelche flags beim g++, die setzen, was man mitcatch(...)alles fängt bzw. was nicht...vll liegt der fehler auch ganz bei dir(war schon oft so, dass hier leute da waren, die die falsche datei kompiliert haben und deshalb dann nen anderes ergebnis hatten, als der quellcode vermuten ließ^^)
bb
-
nielsp schrieb:
Jetzt scheiß ich halt auf Exceptions
Empfehle ich dir nicht, aber uns würde das ehrlich gesagt nicht allzu viel ausmachen...
Versuch mal, im Debug-Modus den Ursprung des
abort()zu eruieren. Am besten zuvor gesamtes Projekt neu kompilieren, gegebenenfalls sogar ein neues Projekt erstellen.
-
Neues Projekt und so hab ich schon gemacht.
Debug gibt folgendes:#0 0x00007fff80268ff6 in __kill () #1 0x00007fff8030a072 in abort () #2 0x0000000100183c82 in uw_init_context_1 () #3 0x00000001001842be in _Unwind_RaiseException () #4 0x0000000100074dd9 in __cxa_throw () #5 0x0000000100000e0a in main ()Grüße