Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.iso-c++ > #1972
| From | Stefan Reuther <stefan.news@arcor.de> |
|---|---|
| Newsgroups | de.comp.lang.iso-c++ |
| Subject | Re: Exception mit Durchfall? |
| Date | 2016-11-24 19:15 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <o17e8r.4ng.1@stefan.msgid.phost.de> (permalink) |
| References | <o0mvct$30v$1@news2.open-news-network.org> <o0s0q8.2so.1@stefan.msgid.phost.de> <o14123$9bf$1@news2.open-news-network.org> |
Am 23.11.2016 um 13:11 schrieb Edzard Egberts: > Stefan Reuther wrote: >> Am 18.11.2016 um 14:23 schrieb Edzard Egberts: >>> Unter Linux beendet das Programm kommentarlos, unter Windows erscheint >>> die Message_Error() aus dem catch-Zweig und ein Fenster "Microsoft >>> Visual C++ Runtime Library" "This application has requested the runtime >>> to terminate in an unusual way". Das erscheint mir widersprüchlich. >> >> Das klingt, als ob irgendwo mittendrin 'abort', wahrscheinlich ausgelöst >> von 'terminate', aufgerufen wird. > > Dazu habe ich nichts im Quelltext gefunden. Natürlich nicht, das macht ja auch die Runtime. > Ansonsten kann ich also zu Recht davon ausgehen, dass eine Exception > nicht irgendwo den Ausgang nimmt, sondern immer durchgereicht wird? > Ich habe das gesamte Programm in einer try-catch(...), aber da ist > noch nie ein Absturz angekommen. try-catch ist kein magisches "du kommst hier nicht raus außer an mir vorbei". Neben exit(), assert() o.ä. sowie den Syscalls der Wahl (z.B. kill()) ist da eben noch die Möglichkeit, dass während des Aufräumens auf dem Weg zum catch eine weitere Exception geworfen wird. Und dann ist halt Ende. >> angehalten, hier ist der Backtrace"), setze einen Breakpoint auf >> __cxa_throw, das ist die Library-Funktion fürs Exception-Werfen. > > Aha, funktioniert blendend, fängt unter Linux aber trotzdem nicht das > Programmende ab. IMHO bedeutet das, der Prozess wurde von außen beendet. > Mein Test fängt das wahrscheinlich ab, da damit noch ein wenig Speicher > übrig ist. Was heißt denn "funktioniert blendend" praktisch? Ich hätte jetzt nicht erwarten, dass das Setzen des Breakpoints scheitert :-) >> Blind raten würde ich, dass da irgendwo ein Destruktor rumhängt, der >> wieder eine Exception wirft. > > Wäre das ein neuer Pfad, der nicht abgefangen wird? Das ist ein Pfad, der nicht abgefangen werden kann. Das Programm kann ja schlecht sagen "whoops, das Zerstören dieses Objektes beim Verlassen der Funktion schlug fehl. Bauen wir das Objekt halt wieder hin und bleiben in der Funktion". Und deswegen wird da das Programm beendet (terminate, abort). Stefan
Back to de.comp.lang.iso-c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Exception mit Durchfall? Edzard Egberts <news@edzeg.net> - 2016-11-18 14:23 +0100
Re: Exception mit Durchfall? Stefan Reuther <stefan.news@arcor.de> - 2016-11-20 11:18 +0100
Re: Exception mit Durchfall? Edzard Egberts <news@edzeg.net> - 2016-11-23 13:11 +0100
Re: Exception mit Durchfall? Stefan Reuther <stefan.news@arcor.de> - 2016-11-24 19:15 +0100
Re: Exception mit Durchfall? Edzard Egberts <news@edzeg.net> - 2016-11-25 08:11 +0100
Re: Exception mit Durchfall? Stefan Reuther <stefan.news@arcor.de> - 2016-11-25 18:07 +0100
Re: Exception mit Durchfall? Edzard Egberts <news@edzeg.net> - 2016-11-28 08:21 +0100
Re: Exception mit Durchfall? Stefan Reuther <stefan.news@arcor.de> - 2016-11-28 17:49 +0100
csiph-web